我目前正在尝试编写脚本来更改200多个Cisco交换机的位置(snmp)。我的问题是我不能一次运行多个命令。我已经制作了一个批处理文件,该文件自动连接到交换机并读取列出命令的.txt文件。但是无论我做什么,我得到的最好结果是仅执行了第一个命令。
批处理文件:
cmd.exe /c echo n | "Filepath(plink)" -ssh Switch Hostname -l Username -pw "Password" -m "txt File"
txt文件:
conf t
snmp-server location test
end
wr
exit
我已经尝试过txt文件中的其他分隔符,例如“;”。 “ |”等等但是似乎没有任何效果。
希望有人可以帮助我解决这个问题。
提前感谢。
实际上是Cisco的一个已知限制,它不支持SSH“ exec”通道命令中的多个命令。
PuTTY / Plink手册的引用部分3.8.3.6 -m
: read a remote command or script from a file:
对于某些服务器(尤其是Unix系统),您甚至可以在该文件中放入多行并依次执行多个命令或整个Shell脚本;但这可以说是一种滥用,并且不能期望它在所有服务器上都能正常工作。 特别是众所周知,[[not与某些“嵌入式”服务器,例如Cisco路由器一起使用。
-m
(及其他)是snmp-server
的subcommands
,不是吗?因此,即使Cisco确实在“ exec”通道上支持多个命令,您的代码也不起作用。有关详细信息,请参见conf t
您需要执行How to type commands in PuTTY by creating batch file?,然后将其子命令提供给其标准输入。
喜欢这个:
conf t