【发布时间】:2015-11-20 14:32:11
【问题描述】:
我一直在尝试编写一个脚本来简化我的一组工作。我用 shell 命令尝试过,但代码看起来太简单了,老实说太业余了。我正在尝试学习 python 来编写脚本,在您的帮助下,我希望我的这个问题可以变成一种解释性实践。
下面是我写的shell代码:
#!/usr/bin/expect
spawn telnet IPaddress
sleep 0.1
expect "Enter username and password"
send "username password \n"
sleep 0.1
send "debug; \n"
sleep 0.1
send "def t1 suspend_loader \n"
expect "enter subcommands"
send "traceback \n \n;"
sleep 1
send "act t1 \n"
sleep 0.1
send "quit \n"
sleep 0.1
send "stor2tst;audit_modules \n"
expect "PS Checksum audit completed"
send "quit \n"
sleep 0.1
send "debug"
sleep 0.1
send "print t1 \n"
sleep 0.5
send "quit \n"
sleep 0.1
send "logutil;open MOD;back all;quit \n"
sleep 0.1
send "debug \n"
sleep 0.1
send "di modules:pr.514 d 1 (&0) char n=68 \n"
send "quit \n"
sleep 1
send "quit \n"
send "logout \n"
interact
您可能也猜到了,这段代码是为特定的开关接口设计的。用户名和密码提示在一行中。为了执行多个命令,我需要特定的 shell 级别(例如调试级别)。我也在这里使用了期望模块,但我认为它只是传递而不检查期望部分中的字符串..
我想做什么?
我需要远程登录到已知 IP 地址列表(20 个服务器)。
所有服务器的用户名和密码都相同。
我需要在每台服务器上执行这些命令集并返回任何输出以分隔指定目录下的日志文件(例如 /tmp/dir)。
此外,有几个命令需要“双输入”才能执行!这就是为什么我在回溯命令之后使用 \n \n 的原因。
任何帮助表示赞赏。
提前谢谢,
【问题讨论】:
标签: python linux bash shell telnet