Usando o Fabric em um dispositivo Cisco: "A linha possui comando automático inválido"


8

Eu não tinha certeza de onde perguntar isso, mas parece ser algo do lado do switch, então pensei em começar aqui primeiro.

Estou trabalhando em um pequeno projeto para automatizar atualizações para arquivos de configuração em massa usando o Fabric . Eu tenho tudo instalado e aparentemente funcionando corretamente no Python e cheguei ao ponto em que estou pronto para começar a criar alguns testes. No entanto, todos os comandos que alimento através do Fabric retornam com o seguinte erro:

A linha possui um comando automático inválido "/ bin / bash -l -c" X ""

Onde X é o comando que estou tentando executar no comutador. Estou tendo problemas para entender por que isso está falhando; talvez alguém possa oferecer uma explicação? Isso é algo que precisa ser configurado no lado da Cisco? Estou testando isso em um switch 3750 executando 12.2, não tenho certeza de quais outros detalhes fornecer.

Respostas:



7

Portanto, há um argumento implícito quando você invoca um comando do Fabric chamado shell = True. Para que as coisas funcionassem corretamente, tive que especificar um argumento shell = False .

Por exemplo, aqui está um comando que eu estava executando que estava falhando.

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

O que estava produzindo a linha tem erro de comando automático "/ bin / bash -l -c" config t "" inválido . Mude seu comando para incluir o shell = False

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

Tudo correu bem para mim depois que eu fiz essa alteração. Para mais informações, há uma seção na documentação que descreve isso. Documentos de tecido .


5

Não estou familiarizado com o Fabric, mas pelo erro, é claro que ele está tentando executar um shell (bash) para executar o comando selecionado. Os dispositivos IOS não têm um "shell"; simplesmente dê à CLI o comando para executar.

(Em outras palavras, o Fabric não parece ter sido projetado para falar com qualquer coisa que não seja um sistema UNIX (tm).)

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.