Menggunakan Fabric pada perangkat Cisco: “Line has autocommand”

8

Saya tidak yakin di mana untuk menanyakan hal ini tetapi sepertinya ada sesuatu di sisi yang beralih jadi saya pikir saya akan mulai di sini dulu.

Saya sedang mengerjakan proyek kecil untuk mengotomatisasi pembaruan untuk mengkonfigurasi file secara massal menggunakan Fabric . Saya telah menginstal semuanya dan tampaknya bekerja dengan benar di Python dan sampai pada titik di mana saya siap untuk mulai membangun beberapa tes. Namun, semua perintah yang saya makan melalui Fabric kembali dengan kesalahan berikut:

Line memiliki perintah otomatis "/ bin / bash -l -c" X "" yang tidak valid

Di mana X adalah perintah yang saya coba jalankan di sakelar. Saya mengalami kesulitan memahami mengapa ini gagal, mungkin seseorang dapat menawarkan penjelasan? Apakah ini sesuatu yang perlu dikonfigurasi di sisi Cisco? Saya menguji ini pada 3750 switch yang menjalankan 12.2, tidak yakin apa detail lain untuk diberikan.

jmreicha
sumber

Jawaban:

7

Fabric dirancang dengan model eksekusi tertentu ; Ini mengasumsikan sesuatu, Bash secara default, akan berjalan pada remote untuk menjalankan perintah Anda.

Anda dapat mengubah perintah jarak jauh. Anda dapat mencoba mengubah perintah jarak jauh menjadi satu ruang ketika Anda mengirim perintah ke sesuatu seperti CLI (misalnya, Cisco IOS).

Lihat Kamus Lingkungan Fabric tentang pengaturan 'shell' .

Craig Constantine
sumber
7

Jadi ternyata ada argumen yang tersirat ketika Anda menjalankan perintah dari Fabric bernama shell = True. Agar semuanya berfungsi dengan benar, saya harus menentukan argumen shell = False .

Jadi misalnya, ini adalah perintah yang saya jalankan yang gagal.

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

Yang menghasilkan Line memiliki kesalahan autocommand "/ bin / bash -l -c" config t "" yang tidak valid . Ubah perintah Anda untuk menyertakan shell = Salah

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

Semuanya berjalan lancar bagi saya setelah saya melakukan perubahan ini. Untuk informasi lebih lanjut ada bagian dalam dokumentasi yang menjelaskan hal ini. Dokumen kain .

jmreicha
sumber
5

Saya tidak terbiasa dengan Fabric, tetapi dari kesalahan, jelas itu mencoba menjalankan shell (bash) untuk menjalankan perintah yang Anda pilih. Perangkat iOS tidak memiliki "shell"; cukup beri CLI perintah untuk dijalankan.

(Dengan kata lain, Fabric tampaknya tidak dirancang untuk berbicara dengan apa pun yang bukan sistem UNIX (tm).)

Ricky Beam
sumber