利用expect交互批量修改普通用戶過期密碼
利用expect交互批量修改普通用戶過期密碼
因為公司接了一個密碼托管的活,有10000多臺機(jī)器,系統(tǒng)有 openSUSE,SUSE,Ubuntu,centos,Oracle-Linux,
而且什么版本都有,不給root權(quán)限,密碼已經(jīng)過期很多,先用expect的方式把過期密碼修改完成,在進(jìn)行托管
#!/bin/bash
#Author:shsnc-****
#Time:2021-5-11
#Name:for_user.sh
#Version:V1.3
#Description:This is a password check script.
>passwd.info
>passwd.error
old_passwd=$1
new_passwd=$2
user=gziaas
# 定義并發(fā)
thread=10
fifofile="/tmp/$$.fifo"
mkfifo $fifofile
exec 8<>${fifofile}
rm -f ${fifofile}
for pid in `seq ${thread}`
do
echo >&8
done
# 定義修改函數(shù)
function change_passwd_ssh(){
/usr/bin/expect << EOF
set timeout 20
spawn /usr/bin/ssh ${user}@$ip
expect {
"(yes/no)?" {send "yes\r";exp_continue}
"*assword:" {send "${old_passwd}\r";}
}
expect {
"(current) UNIX password:" {send "${old_passwd}\r";}
"Old Password:" {send "${old_passwd}\r";}
}
expect {
"New *assword:" {send "${new_passwd}\r";}
"Retype new password:" {send "$new_passwd\r";}
}
expect {
"Retype new password:" {send "$new_passwd\r";}
}
expect {
"Reenter New Password:" {send "$new_passwd\r";}
"Retype new password:" {send "$new_passwd\r";}
}
send "exit\r"
expect eof
EOF
}
# 腳本主體
for ip in `cat ip_list.txt`
do
read -u 8
{
change_passwd_ssh $1 $2 1>>./passwd.info 2>>./passwd.error
if [ $? -eq 0 ];then
echo "${ip}" >>./successful.ip
else
echo "${ip}" >>./fail.ip
fi
echo >&8
}&
done
wait
exec 8>&-
-----你努力獲得的,都是自己的,不容易忘掉。
星辰和大海都需要門票,詩和遠(yuǎn)方的路費(fèi)都很貴。來人間一次,努力成為最好的自己。人間值得,未來可期。
浙公網(wǎng)安備 33010602011771號