随风飘来 发表于 2009-07-24 16:11

Expect循环登录多台服务器执行命令的脚本


Expect循环登录多台服务器执行命令的脚本
#!/usr/bin/expect
foreach IP {
61.152.114.188
61.152.114.185
.............
} {
#循环,可以多台相同密码的服务器同时处理,不同密码的需要改动一下,在下面再加一个密码的循环,
spawn ssh
username@$IP
expect {
"*(yes/no)*" { send "yes\r"}
"password:" { send "123456\r" }
}            #SSH第一次远程登录服务器
expect "username"
send "su -\r"      #SSH普通用户名密码登录
expect "Password:"
send "123456\r"      #SSH的root用户名密码登录
expect -timeout 1
expect "root"
send "route add -net 10.1.1.0 netmask 255.255.255.0 gw 10.1.1.1\r"
}
#输入要执行的命令,这儿是加条路由。


#!/usr/bin/expect -f
for ((i=1;i*"
send "exec su -\r"
expect "Password:"
send "123456\r"
expect "*root]#"
send "exit\n"
done

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/93621/showart_2006404.html

laohuanggua 发表于 2010-10-11 19:40

赞一个!!!!正需要呢!

也弹吉他 发表于 2010-11-22 15:25

恩恩!!好东西 !!

mukey 发表于 2010-12-29 11:10

赞,上次我没搞定:
cat host_file.txt |while
do
#your shell
done

结果自能执行第个host。想了个土方法用这个脚本生成了个脚本文件,再执行。

mukey 发表于 2010-12-29 11:32

试了一下,晕,脚本无法执行

xiaoao7678 发表于 2011-01-27 19:58

:sleepy:我迫切的想知道密码循环是怎么做到的!!!

hhb19812001 发表于 2015-05-18 22:23

个人觉得将IP,用户名,密码 全部放置在一个CSV 里面。再通过访问CSV更试用
页: [1]
查看完整版本: Expect循环登录多台服务器执行命令的脚本