SSH登陆脚本
概述
ssh命令用来远程登录linux主机,对于开发人员和运维,这个命令很常用。但是这个命令需要交互,即在输入完ssh命令并且执行后,还需要手工输入密码。
这就导致我们无法编写这样的脚本:自动登录远程主机并执行一些命令。
注意:以下所有脚本均是在mac下测试
解决方法
思路:通过其他手段将交互操作(输入密码)变成无需交互。
方法一:sshpass
sshpass -p yourpwd ssh usrname@192.168.1.1
-p: 密码
优点:简单
缺点:sshpass在mac下需要安装
由于第一次登陆ssh时,会有确认提示,这个需要交互,可以通过 -o StrictHostKeychecking=no 参数解决此问题。
方法二:expect
expect命令是将需要交互操作自动化的好工具。
#!/usr/bin/expect --
# 进入交互模式
spawn ssh usrname@192.168.1.1
# 如果第一次登陆,需要确认
expect {
"*yes/no" { send "yes\r"; exp_continue }
"*password*" { send "yourpwd\r" }
}
expect "*@*"
send "ls -l\r"
# 进入交互
interact
优点:mac下自带expect。expect命令目的就是把交互操作改成自动化。
缺点:较复杂。