1. 程式人生 > 其它 >shell實現批量登入伺服器修改使用者密碼

shell實現批量登入伺服器修改使用者密碼

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的互動模式