免密码SSH远程执行命令

我们经常需要在远程主机上执行一些命令,为了方便,可以使用一些方法来实现免密码SSH登录,比如:公钥授权的方式。但是这种方式有一些缺陷,它是针对单台机器做的授权,也就是说,如果换了一台机器,授权就失效了,还是需要手动输入密码。

其实还有另外一种通用性比较强的方式: expect。

 

expect是一种模拟人机交互的程序。可以用它来模拟人输入密码的过程。

 

使用说明:

1.将下列代码保存为一个文件,比如 remoteExecute :

#!/usr/bin/expect -f
set timeout -1
set server [lindex $argv 0]
set port [lindex $argv 1]
set user [lindex $argv 2]
set password [lindex $argv 3]
set command [lindex $argv 4]
spawn ssh -p $port $user@$server $command
expect {
"(yes/no)?" { send "yes\r"; exp_continue }
"password:" { send "$password\r"; exp_continue }
eof
}
catch wait result
exit [lindex $result 3]

 

2. 然后在要使用的机器上安装 expect 程序( yum install -y expect )

 

3. 执行下列命令连接:

expect -f <上述remoteExecute文件的路径> <远程机器的IP地址> <ssh服务的端口> <用户名> <密码> <要执行的命令>

比如,在remoteExecute文件所在的目录执行:

expect -f remoteExecute 192.168.100.3 21069 root '#$@!#$!' 'ls /root'

就会在当前shell 列出 192.168.100.3 的 /root 目录。

 


本文转自 Bruceweien 51CTO博客,原文链接:http://blog.51cto.com/bruceweien/1932414


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值