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命令目的就是把交互操作改成自动化。
缺点:较复杂。

posted @ 2020-04-12 18:12  june.js  阅读(1015)  评论(0编辑  收藏  举报