我不确定在哪里问这个问题,但似乎是交换机方面的问题,所以我想我应该首先从这里开始。大量使用Fabric。我已经安装了所有东西,并且看起来可以在Python中正常工作,并且已经准备好开始构建一些测试。但是,我通过Fabric提供的所有命令都返回了以下错误:


行包含无效的自动命令“ / bin / bash -l -c” X“” >

X是我试图在交换机上运行的命令。我无法理解为什么会失败,也许有人可以提供解释吗?这是需要在思科方面配置的东西吗?我正在运行12.2的3750交换机上对此进行测试,不确定是否要提供其他详细信息。

#1 楼

Fabric具有一定的执行模型;它假定某些东西(默认情况下为Bash)将在遥控器上运行以执行命令。

您可以更改远程命令的内容。您可以在将命令发送到CLI(例如Cisco IOS)之类的命令时,将远程命令更改为单个空格。

有关“ shell”设置,请参见Fabric的环境词典。 br />

#2 楼

因此事实证明,当您从Fabric调用名为shell = True的命令时,隐含了一个参数。为了使事情正常运行,我必须指定一个参数shell = False。

因此,例如,这是我正在运行的一条失败的命令。 br />
哪个生产线具有无效的自动命令“ / bin / bash -l -c“ config t””错误。更改您的命令以包含shell = False

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


进行此更改后,一切对我来说都很顺利。有关更多信息,文档中有一节对此进行了描述。面料文档。

#3 楼

我不熟悉Fabric,但是从错误中可以明显看出,它正在尝试运行shell(bash)来运行您选择的命令。 iOS设备没有“外壳”;只需给CLI提供要运行的命令即可。