批量部署机器执行命令_小模版 


案例:

脚本目的:两台以上机器(ip:172.16.1.187和172.16.1.188)去拷贝主控制机器IP:172.16.1.199上目录/liang/下的ceshi.sh脚本  (如果这儿有更多的目的要求可以按照以下方法扩展即可!)

以下脚本只需放在主控制端机器IP:172.16.1.199去运行即可实现目的!

法一:(连续ip)

vim bushu.sh

#!/usr/bin/expect -f

for {set i 187} {$i<=208} {incr i} {
spawn ssh -l root 172.16.1.$i
expect "*password: "
sleep 1
send "123456\r"
###可以继续提取关键词!
expect "root"
send "scp
[email protected]:/liang/ceshi.sh /liang/\r"    #这儿是要批量去执行的命令操作!更多操作可类似并写!

###注意如果第一次连过去可能会让提示yes/no!如果是第一次还得加以下两行如下:

#expect "yes"
#send "yes\r"
expect "pasword:"
send "123456\r"
expect eof
}


法二:(不连续ip)

以上可以这样写:
#!/usr/bin/expect -f

foreach ip {
172.16.1.187
172.16.1.188
}  {
spawn ssh -l root $ip
expect "*password: "
sleep 1
send "123456\r"
###可以继续提取关键词!
expect "root"
send "scp
[email protected]:/liang/ceshi.sh /liang/\r"   #这儿是要批量去执行的命令操作!更多操作可类似并写!
###注意如果第一次连过去可能会让提示yes/no
expect "pasword:"
send "123456\r"
expect eof
}

谢谢观看!若有更好办法!可分享探讨!