linux.ssh腳本自動登錄

在Linux環境中爲了實現某些功能,需要手工輸入相關的參數,進行人機交互,如遠程登錄等。Expect是一個免費的編程工具語言,能實現自動執行人機交互

下面給出一個實現SSH自動遠程登錄的例子

代碼:

       #/usr/bin/expect
        
        set hostname [lindex $argv 0]
        set passwd   [lindex $argv 1]

        spawn ssh $hostname

        expect {
                    "*password:*" { send "passwd\r" }
                    "*es/no)?" {send "yes\r"     exp_continue }
                } 

        interact   

1)#/usr/bin/expect

       指定用來執行該腳本的命令程序

2)set hostname [lindex $argv 0]

  獲得腳本的執行參數保存在數組$argv中,從0號開始是參數,並將其保存到變量hostname中。

3) spawn ssh $hostname

  spawn在expect中用於啓動一個新線程,用來傳遞交互指令。本程序就是去執行ssh $hostname 命令;

4)expect 和 send

  expect和send命令用來實現交互過程。expect 判斷標準輸出,從輸出的信息中查詢你想要匹配的字符串如“*password:*”,存在則執行後面的名利,否則忽略。exp_continue功能相當於C語言中的continue。send執行交互操作,與手工輸入等效。

5)interact 

       執行完成後保持交互狀態,把控制權交給控制檯,留在遠程登錄的終端上,如果沒有這一句登錄完成後會退出。 





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章