shell實現批量登入伺服器修改使用者密碼
阿新 • • 發佈:2021-07-14
shell實現批量登入伺服器修改使用者密碼
指令碼
#!/usr/bin/env bash while read line do ip=`echo $line | awk '{print $1}'` password=`echo $line | awk '{print $2}'` /usr/bin/expect <<-EOF spawn ssh root@$ip set timeout 5 expect { "yes/no" { send "yes\r"; exp_continue } "password" { send "$password\r"; } } expect "*#" send "passwd \r" expect { "password" { send "new_password\r"; exp_continue } #new_password換成你的新密碼 "password" { send "new_password\r"; } } expect eof EOF done < iplist.txt
首先你需要把伺服器的ip地址和原來的密碼分為兩列寫入iplist.txt檔案,這個檔案與指令碼處於一個目錄:
cat iplist.txt
192.168.1.1 123456
192.168.1.2 654321
set timeout 5 設定超時為5秒;
send 的作用就是自動向系統傳送命令;
expect 的作用說白了就是send傳送命令後預判命令列會出現的結果,根據結果再進行send傳送命令;
expect eof 退出expect的互動模式