#!/bin/bash OLD_INFO=hostlist
for IP in $(awk '/^[^#]/{print $1}' $OLD_INFO); do
USER=$(awk -v I=$IP 'I==$1{print $2}' $OLD_INFO)
PASS=$(awk -v I=$IP 'I==$1{print $3}' $OLD_INFO)
PORT=$(awk -v I=$IP 'I==$1{print $4}' $OLD_INFO)
NEW_PASS=$(awk -v I=$IP 'I==$1{print $5}' $OLD_INFO)
expect -c"
spawn ssh -p$PORT root@$IP
set timeout 15
expect {
\"(yes/no)\" {send \"yes\r\";exp_continue}
\"password:\" {send \"$PASS\r\";exp_continue}
\"# \" {send \"echo \'$NEW_PASS\'|passwd --stdin $USER\r exit\r\";exp_continue}
}"
done
当 hostlist 文件里的多行记录出现同一个 IP 时。。。脚本就不行了,比如内容如下
192.168.128.130 test 123456 22 abc*123
192.168.128.131 a 123456 22 abc*123
我把脚本改成 for line in hostlist,按行读取,再加个 IP 参数,又是另一种错误了。。。