Sử dụng Fabric trên thiết bị của Cisco: Dòng Line có chế độ tự động không hợp lệ


8

Tôi không chắc chắn nơi để hỏi điều này nhưng nó dường như là một cái gì đó ở phía chuyển đổi vì vậy tôi nghĩ rằng tôi sẽ bắt đầu ở đây đầu tiên.

Tôi đang làm việc trên một dự án nhỏ để tự động cập nhật các tệp cấu hình hàng loạt bằng Fabric . Tôi đã cài đặt mọi thứ và dường như hoạt động chính xác trong Python và đã đến lúc tôi sẵn sàng bắt đầu xây dựng một số thử nghiệm. Tuy nhiên, tất cả các lệnh mà tôi cung cấp thông qua Fabric đều quay lại với lỗi sau:

Dòng có autocommand không hợp lệ "/ bin / bash -l -c" X ""

Trong đó X là lệnh tôi đang cố gắng chạy trên công tắc. Tôi đang gặp khó khăn để hiểu tại sao điều này là thất bại, có lẽ ai đó có thể đưa ra một lời giải thích? Đây có phải là thứ cần được cấu hình ở phía Cisco không? Tôi đang thử nghiệm điều này trên một công tắc 3750 chạy 12.2, không biết phải cung cấp những chi tiết nào khác.

Câu trả lời:


7

Vải được thiết kế với một mô hình thực hiện nhất định ; Nó mặc định giả định một cái gì đó, Bash theo mặc định, sẽ chạy trên điều khiển từ xa để thực thi lệnh của bạn.

Bạn có thể thay đổi những gì các lệnh từ xa mặc dù. Bạn có thể thử thay đổi lệnh từ xa thành một không gian duy nhất khi bạn gửi lệnh đến một thứ gì đó như CLI (ví dụ: Cisco IOS).

Xem Từ điển Môi trường của Fabric về cài đặt 'vỏ' .


7

Vì vậy, nó chỉ ra rằng có một đối số được ngụ ý khi bạn gọi một lệnh từ Fabric được gọi là shell = True. Để mọi thứ hoạt động chính xác, tôi phải chỉ định shell shell = false .

Vì vậy, ví dụ, đây là một lệnh mà tôi đã chạy mà không thành công.

def config_t():
  run("config t")

Việc sản xuất Line có lỗi tự động không hợp lệ "/ bin / bash -l -c" config t "" . Thay đổi lệnh của bạn để bao gồm shell = Sai

def config_t():
    run("config t", shell=False)

Mọi thứ diễn ra suôn sẻ cho tôi sau khi tôi thực hiện thay đổi này. Để biết thêm thông tin có một phần trong tài liệu mô tả điều này. Tài liệu vải .


5

Tôi không quen với Fabric, nhưng từ lỗi, rõ ràng là nó đang cố chạy shell (bash) để chạy lệnh đã chọn của bạn. Các thiết bị iOS không có "vỏ"; chỉ cần cung cấp cho CLI lệnh để chạy.

(Nói cách khác, Fabric dường như không được thiết kế để nói chuyện với bất cứ thứ gì không phải là hệ thống UNIX (tm).)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.