shell ssh自动登陆

shell自动登陆主机

shell执行以下操作

登陆主机 192.168.238.130 , 并自动输入用户名和密码

需要已经安装好expect工具

#!/usr/bin/expect 
set timeout 30 
spawn ssh -l root 192.168.238.130
expect "password:"
send "root\r"
interact

进行代码优化,写成通用模板的形式

#!/usr/bin/expect 
set timeout 30 
set user root
set passwd root
set ip 192.168.238.130
spawn ssh -l $user $ip
expect "password:"
send "$passwd\r"
interact

#!/usr/bin/expect
表示使用该目录下的expect命令运行下面的代码

set timeout 30
设置操作的超时时间

spawn ssh -l root 192.168.238.130
spawn是进入expect环境后才可以执行的expect内部命令。它主要的功能是给ssh运行进程加个壳,用来传递交互指令。
执行ssh命令,进行登陆操作

expect "password:"
判断上次输出结果里是否包含“password:”的字符串,如果有则立即返回,否则就等待一段时间后返回,这里等待时长就是前面设置的30秒

send "root\r"
执行交互动作,与手工输入密码的动作等效。
发送root\r,其中root时密码,\r表示回车。

interact
执行完成后保持交互状态,把控制权交给控制台,这个时候就可以手工操作了。如果没有这一句登录完成后会退出,而不是留在远程终端上。如果你只是登录过去执行。

shell 通过跳转机登陆(两次自动登陆)

shell执行以下操作

  1. 登陆主机 192.168.238.130 , 并自动输入用户名和密码
  2. 登陆成功之后,再登陆192.168.238.131 , 并自动输入用户名和密码

有的时候,我们不能直接登陆目的主机,而是需要先登陆跳转机(192.168.238.130),然后在跳转机上登陆目的主机(192.168.238.131)。

#!/usr/bin/expect 
set timeout 30 
spawn ssh -l root 192.168.238.130
expect "password:"
send "root\r"
expect "]*"
send "ssh -l root 192.168.238.131\r"
expect "password:"
send "root\r"
interact

我们可以将代码优化写成通用的模板

#!/usr/bin/expect 
set timeout 30 
set host1_user root
set host1_passwd root
set host1_ip 192.168.238.130
set host2_user root
set host2_passwd root
set host2_ip 192.168.238.131
spawn ssh -l $host1_user $host1_ip
expect "password:"
send "$host1_passwd\r"
expect "]*"
send "ssh -l $host2_user $host2_ip\r"
expect "password:"
send "$host2_passwd\r"
interact
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值