命令批量执行脚本,同样需要两个脚本来实现:1 exe.expect
2 exe.sh
3 ip.list IP列表
cat exe.expect
#!/usr/bin/expect
set host [lindex $argv 0] #第一个参数,IP列表
set passwd "hd792310"
set cm [lindex $argv 1] #第二个参数,cm要执行的命令
spawn ssh [email protected]$host
expect {
"yes/no" { send "yes\r"}
"password:" { send "$passwd\r" }
}
expect "]*"
send "$cm\r"
expect "]*"
send "exit\r"
cat exe.sh
#!/bin/bash
for ip in `cat ip.list`
do
echo $ip
./exe.expect $ip "w;free -m;ls /tmp" #一行执行多个命令,用;来分割
done
如果需要执行的命令很复杂,;分隔符不能胜任。此时需要写SHELL脚本,先同步到远程机器,然后把脚本写到第二个参数来执行。考虑到有ip.list等因素,不进入指定目录,找不到文件而报错,需要进入指定的目录来执行命令。
时间: 2024-10-26 13:45:37