91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

expect怎么實現批量修改linux密碼

發布時間:2021-07-30 17:16:07 來源:億速云 閱讀:155 作者:chen 欄目:開發技術

這篇文章主要講解了“expect怎么實現批量修改linux密碼”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“expect怎么實現批量修改linux密碼”吧!

最近對linux批量執行的腳本很感興趣,在網上到處找有關expect批量執行腳本,今天就給大家共享一個批量修改密碼的腳本.

腳本內容:

代碼如下:


#!/usr/bin/expect
if { $argc<2 } {
    send_user "usage: $argv0 <host file> <cmd file> \n"
    exit
}
 
# 機器列表數據格式:  IP  端口  舊密碼  新密碼
set hostfile    [ open [lindex $argv 0] ]
# 命令列表數據格式:  一條命令一行
set cmdfile    [ open [lindex $argv 1] ]
 
# 數據文件分割符,默認為空格
set part "\ "
 
# 過濾關鍵字
set key_password "password:\ "
set key_init "\(yes/no\)\?\ "
set key_confirm "'yes'\ or\ 'no':\ "
set key_ps "*]#\ "
set key_newpassword "UNIX password:\ "
set timeout 30
 
log_file ./exprct.log
match_max 20480
 
while {[gets $hostfile _hosts_] >= 0} {
    set hosts [string trim $_hosts_]
    set str_index [string first $part $hosts]
    set host [string trim [string range $hosts 0 $str_index]]
    set temp [string trim [string range $hosts [expr $str_index + 1] [string length $hosts]]]
    set str_index [string first $part $temp]
 
    if { $str_index == -1 } {
        set port 22
        set pass $temp
        set newpass $temp
    } else {
        set port [string trim [string range $temp 0 $str_index]]
        set temp_pass [string trim [string range $temp [expr $str_index + 1] [string length $temp]]]
        set str_index [string first $part $temp_pass]
        set pass [string trim [string range $temp_pass 0 $str_index]]
        set newpass [string trim [string range $temp_pass [expr $str_index + 1] [string length $temp_pass]]]
    }
 
    spawn ssh -p $port $host
    while {1} {
        expect {
            "$key_password" {
                send "$pass\r"
            }
            "$key_init" {
                send "yes\r"
            }
            "$key_confirm" {
                send "yes\r"
            }
            "$key_ps" {
                while {[gets $cmdfile cmd] >= 0} {
                    send "$cmd\r"
                    expect {
                        "$key_ps" {
                            continue
                        }
                        "$key_newpassword" {
                            send "$newpass\r"
                            expect "$key_newpassword" {
                                send "$newpass\r"
                                expect "$key_ps"
                                continue
                            }
                        }
                    }
                }
                seek $cmdfile 0 start
                send_user "\r"
                break
            }
            timeout {
                puts "$host timeout\n"
                break
            }
        }
    }
    send "exit\r"
    close
    wait
}
 
close $hostfile
close $cmdfile
 
exit

感謝各位的閱讀,以上就是“expect怎么實現批量修改linux密碼”的內容了,經過本文的學習后,相信大家對expect怎么實現批量修改linux密碼這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

广东省| 怀来县| 揭阳市| 天台县| 潼南县| 道孚县| 濮阳市| 喀喇沁旗| 得荣县| 鄂尔多斯市| 新疆| 策勒县| 龙门县| 绿春县| 开鲁县| 齐河县| 兴仁县| 渭南市| 兰州市| 龙江县| 曲阜市| 古丈县| 九寨沟县| 安仁县| 临沭县| 黎城县| 克拉玛依市| 金门县| 兴安盟| 双柏县| 广丰县| 日土县| 秭归县| 偏关县| 德阳市| 怀仁县| 湘阴县| 昌宁县| 容城县| 台前县| 康定县|