繁体   English   中英

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

[英]Execute commands on remote host via telnet with python script

我一直在尝试编写脚本来简化我的工作。 我用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

您可能已经猜到了,该代码是为特定的交换机接口设计的。 用户名和密码提示显示在一行中。 我需要特定的外壳程序级别(例如调试级别)才能执行多个命令。 我也在这里使用了Expect模块,但我认为它只是在不检查Expect部分中的字符串的情况下继续传递。

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

任何帮助表示赞赏。
提前致谢,

我已经为以下代码人员编写了自己的代码,希望对希望寻找类似解决方案的人们有所帮助:

#!/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类型交换机上工作而设计的,因此请对我执行代码的低级设计。请注意,它可以正常工作并满足我们的需求。 ::)

干杯!

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

http://www.fabfile.org/

http://docs.fabfile.org/en/1.10/usage/execution.html#roles

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM