使用python脚本通过telnet在远程主机上执行命令

时间:2015-08-26 13:50:18

标签: python linux bash shell telnet

我一直在努力编写一个脚本来简化我的工作。我尝试使用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级别(例如调试级别)才能执行多个命令。我在这里也使用了expect模块,但我认为它只是传递而不检查期望部分中的字符串..

我在尝试做什么?
我需要telnet到已知IP地址列表(20台服务器) 所有服务器都具有相同的用户名和密码 我需要在每个服务器上执行这些命令集,并返回指定目录下的日志文件(例如/ tmp / dir)。 此外,几个命令需要“双输入”才能执行!这就是我在traceback命令后使用\ n \ n的原因。

感谢任何帮助。
提前谢谢,

2 个答案:

答案 0 :(得分:0)

我自己编写了以下代码,我希望这可以帮助那些寻找类似解决方案的人:

#!/usr/bin/expect

set timeout 150

array set hosts {0 <IPaddr> 1 <IPaddr> 2 <IPaddr> 3 <IPaddr> 4 <IPaddr> 5 <IPaddr> 6 <IPaddr> 7 <IPaddr> 8 <IPaddr> 9 <IPaddr> 10 <IPaddr> 11 <IPaddr>}

for {set i 0} {$i < 12 } { incr i } {

spawn telnet $hosts($i)
expect "Enter username and password"
send "root toor \n"
sleep 2
expect ">" {send "print '****************$hosts($i)****************' \n"}
expect ">" {send "command \n"}
expect ">" {send "command \n"}
expect ">" {send "command \n"}
expect "enter subcommands"
expect ">" {send "command \n\n"}
expect ">" {send "command \n"}
expect ">" {send "command \n"}
expect ">" {send "print '****************$hosts($i)****************' \n"}
interact
}

正如我在对问题的描述中所提到的,此代码专门设计用于Nortel DMS类型交换机,因此请执行代码可能的低级设计。所有重要的是它的工作和实现我们需要.. :)

干杯!

答案 1 :(得分:-1)

您应该能够使用fabric为多个服务器运行相同的命令。

How do I stop IIS from caching any files, ever, under any circumstances?

http://www.fabfile.org/