批量主机远程执行命令脚本
多台主机同时执行命令
expect
脚本编写
#!/bin/bash
COMMAND=$*
HOST_INFO=host.info
for IP in $(awk '/^[^#]/{print $1}' $HOST_INFO); do
USER=$(awk -v ip=$IP 'ip==$1{print $2}' $HOST_INFO)
PORT=$(awk -v ip=$IP 'ip==$1{print $3}' $HOST_INFO)
PASS=$(awk -v ip=$IP 'ip==$1{print $4}' $HOST_INFO)
expect -c "
spawn ssh -p $PORT $USER@$IP
expect {
"(yes/no)" {send "yes
"; exp_continue}
"password:" {send "$PASS
"; exp_continue}
"$USER@*" {send "$COMMAND
exit
"; exp_continue}
}
"
echo "-------------------"
done