#!/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 " #在expect的shell环境中执行ssh -p $PORT $USER@$IP这条命令 spawn ssh -p $PORT $USER@$IP #捕获当前的一个信息,自动帮你输入 expect { #初次远程登录会输入yes/no,发送yes指令,\表示转义,r表示回车 \"(yes/no)\" {send \"yes\r\"; exp_continue} #紧接着就是输入密码,发送密码指令 \"password:\" {send \"$PASS\r\"; exp_continue} #$USER@*表示匹配当前的用户名和@符号,发送你想要的执行的命令 \"$USER@*\" {send \"$COMMAND\r exit\r\"; exp_continue} } " echo "-------------------" done
|