我想只做一个脚本,通过ssh连接到多个设备(有时是三个设备,其他时间十个,......)并在其中执行相同的命令。
如果我执行./script.sh ipaddress1 ipaddress2 ipaddress5
我想对所有设备(ipaddress 1,2和5)执行一个ssh,以执行一个命令并关闭会话。但我的问题是只有我可以连接到第一个设备。我怎么能做一个循环,直到我连接到最后一个设备?
#!/usr/bin/expect -f
set list_ip [lindex $argv 0]
foreach ip $list_ip {
spawn ssh -l NA $ip
expect "password:"
send "pepe\n"
expect "#"
exp_send "sh linecard all\n\r"
send "\n"
send "exit\n"
send "\n"
expect eof
}
expect "%"
答案 0 :(得分:1)
嗯,简单。遍历argv
列表(所有参数),而不是第一个参数:
#!/usr/bin/expect -f
foreach ip $argv {
spawn ssh -l NA $ip
expect "password:"
send "pepe\n"
expect "#"
exp_send "sh linecard all\n\r"
send "\n"
send "exit\n"
send "\n"
expect eof
}