使用spawn和expect实现自动交互

有时候我们使用命令行进行交互时,不想频繁的做一些重复的事情,例如:每次ssh远程登录时都需要输入密码。使用spawn和expect可以自动完成一些交互。

一个自动输入密码的简单脚本

#!/usr/bin/expect

set login_name  "user name"
set login_host  "hosts ip"
set password    "guess what"

spawn ssh $login_name@$login_host
expect {
        "(yes/no)" { send "yes
"; exp_continue }
        "password:" { send "$password
" }
}
#expect $login_name@*   {send "ls
" }  ;
interact
 |  |  |  |  | 
有时候我们使用命令行进行交互时,不想频繁的做一些重复的事情,例如:每次ssh远程登录时都需要输入密码。使用spawn和expect可以自动完成一些交互。 一个自动输入密码的简单脚本 #!/usr/bin/expect set login_name "user name" set login_host "hosts ip" set password "guess what" spawn ssh $login_name@$login_host expect { "(yes/no)" { send "yes "; exp_continue } "password:" { send "$password " } } #expect $login_name@* {send "ls " } ; interact  |  |  |  |  | 
有时候我们使用命令行进行交互时,不想频繁的做一些重复的事情,例如:每次ssh远程登录时都需要输入密码。使用spawn和expect可以自动完成一些交互。 一个自动输入密码的简单脚本 #!/usr/bin/expect set login_name "user name" set login_host "hosts ip" set password "guess what" spawn ssh $login_name@$login_host expect { "(yes/no)" { send "yes "; exp_continue } "password:" { send "$password " } } #expect $login_name@* {send "ls " } ; interact  |  |  |  |  | 
经验分享 程序员 微信小程序 职场和发展