#!/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 参数,又是另一种错误了。。。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.