Utilizzo di Fabric su un dispositivo Cisco: "La linea ha un comando automatico non valido"


8

Non ero sicuro di dove chiedere questo, ma sembra essere qualcosa sul lato dell'interruttore, quindi ho pensato di iniziare da qui.

Sto lavorando a un piccolo progetto per automatizzare gli aggiornamenti per configurare i file in blocco utilizzando Fabric . Ho installato tutto e sembra funzionare correttamente in Python e sono arrivato al punto in cui sono pronto per iniziare a costruire alcuni test. Tuttavia, tutti i comandi che invio tramite Fabric restituiscono il seguente errore:

La riga ha un comando automatico non valido "/ bin / bash -l -c" X ""

Dove X è il comando che sto cercando di eseguire sullo switch. Ho difficoltà a capire perché questo non funziona, forse qualcuno può offrire una spiegazione? È qualcosa che deve essere configurato sul lato Cisco? Sto testando questo su uno switch 3750 con 12.2, non sono sicuro di quali altri dettagli fornire.

Risposte:



7

Quindi si scopre che c'è un argomento implicito quando si invoca un comando da Fabric chiamato shell = True. Per far funzionare correttamente le cose ho dovuto specificare un argomento shell = False .

Quindi, per esempio, ecco un comando che stavo eseguendo che non andava a buon fine.

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

Chi produceva la riga ha un errore "/ bin / bash -l -c" config t "" non valido per autocommand . Modifica il tuo comando per includere shell = False

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

Tutto è andato liscio per me dopo aver apportato questa modifica. Per ulteriori informazioni c'è una sezione nella documentazione che descrive questo. Documenti sul tessuto .


5

Non ho familiarità con Fabric, ma dall'errore è chiaro che sta tentando di eseguire una shell (bash) per eseguire il comando selezionato. I dispositivi IOS non hanno una "shell"; dare semplicemente alla CLI il comando per eseguire.

(In altre parole, Fabric non sembra progettato per parlare con qualsiasi cosa che non sia un sistema UNIX (tm).)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.