2012-10-28 33 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