Verwenden von Fabric auf einem Cisco-Gerät: "Leitung hat ungültigen automatischen Befehl"


8

Ich war mir nicht sicher, wo ich das fragen sollte, aber es scheint etwas auf der Schalterseite zu sein, also dachte ich, ich würde zuerst hier anfangen.

Ich arbeite an einem kleinen Projekt zur Automatisierung von Updates für Konfigurationsdateien in großen Mengen mithilfe von Fabric . Ich habe alles installiert und arbeite anscheinend korrekt in Python und bin an dem Punkt angelangt, an dem ich bereit bin, einige Tests zu erstellen. Alle Befehle, die ich über Fabric eingebe, werden jedoch mit dem folgenden Fehler zurückgegeben:

Zeile hat ungültigen automatischen Befehl "/ bin / bash -l -c" X ""

Wobei X der Befehl ist, den ich auf dem Switch ausführen möchte. Ich habe Probleme zu verstehen, warum dies fehlschlägt. Vielleicht kann jemand eine Erklärung anbieten? Muss dies auf der Cisco-Seite konfiguriert werden? Ich teste dies auf einem 3750-Switch mit 12.2 und bin mir nicht sicher, welche weiteren Details ich bereitstellen soll.

Antworten:



7

Es stellt sich also heraus, dass es ein Argument gibt, das impliziert wird, wenn Sie einen Befehl von Fabric mit dem Namen shell = True aufrufen. Damit die Dinge richtig funktionieren, musste ich ein Argument shell = False angeben .

Hier ist zum Beispiel ein Befehl, den ich ausgeführt habe und der fehlgeschlagen ist.

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

Was die Zeile erzeugt hat, hat einen ungültigen Fehler "/ bin / bash -l -c" config t "" . Ändern Sie Ihren Befehl so, dass er die Shell = False enthält

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

Nachdem ich diese Änderung vorgenommen hatte, lief alles reibungslos für mich. Weitere Informationen finden Sie in der Dokumentation, die dies beschreibt. Stoffdokumente .


5

Ich bin mit Fabric nicht vertraut, aber aufgrund des Fehlers ist klar, dass versucht wird, eine Shell (Bash) auszuführen, um den ausgewählten Befehl auszuführen. IOS-Geräte haben keine "Shell"; Geben Sie der CLI einfach den Befehl zum Ausführen.

(Mit anderen Worten, Fabric scheint nicht dafür ausgelegt zu sein, mit etwas zu kommunizieren, das kein UNIX (tm) -System ist.)

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.