2012-10-28 66 views
-1

我必須每天ssh到大量的設備,一遍又一遍...... 我可以使用bash &自動化指望它這個腳本:SSH登錄使用bash和期望

#!/usr/bin/expect 
spawn ssh hostname -l username 
expect "password:" 
send "secret\n" 
interact 

大多數設備的需要'root'作爲登錄名,所以上面的腳本適用於此。我想修改上面的腳本以嘗試登錄一次,如果失敗,請切換到另一個用戶名並提示輸入密碼。那可能嗎?

我知道密鑰,以及密碼在腳本中的不好做法,這對我來說並不重要。

+1

如果你知道鑰匙,然後使用它們。 – dAm2K

+1

使用期望自動化ssh作品,但它是非常基本的。現在幾乎所有的腳本語言(Perl,Python,Ruby等)都可以輕鬆使用模塊,這將允許您以更少的工作執行這些任務。 – salva

回答

0

man page有很多很好的例子。

expect { 
    "string that indicates success" { 
    } 
    "string that indicates failure" { 
    close 
    stty -echo 
    send_user "Enter password: " 
    expect_user -re "(.*)\n" 
    send_user "\n" 
    send "$expect_out(1,string)\r" 
    stty echo 
    } 
} 
interact 
+0

我不明白。 – user1541542