ssh跳板登陆太麻烦,使用expect每次自动登录 利用expect 模拟键盘动作,在闲置时间之内模拟地给个键盘响应

#!/usr/bin/expect -f
#设置超时时间
set timeout 3
#这里设置了跳板机的密码
set password "你的跳板机密码"
#连接跳板机
spawn ssh 用户名@跳板机IP

#如果返回的内容包含*yes/no*,发送yes
expect "*yes/no*" {send "yes\n"}
#如果返回的内容包含"*password*",发送你设置的密码+\r(PS.这里的\r一定要加,是回车操作的意思。。。在网上搜了好多没有说明,一直以为是换行,没有加这个,结果一直执行不成功)
expect "*Password:*" {send "$password\r;"}
#登录跳板机成功,如果返回的内容包含"*你的跳板机的名称*",发送连接测试机的命令
expect "*能匹配跳板机名称的字符串*" {send "ssh 测试服务器的用户名@测试服务的IP\r";}
#同上面一样。。。注意interact是留在测试机上,给用户控制权限,如果不写会直接退出
expect "*Password:*" {send "你的密码\r";interact}
#保存为 login.sh 执行 expect login.sh
#终于不用手输两次密码了.....
首先MAC要安装expect( brew install expect),然后,编写上面的脚本文件保存,
保存为 login.sh 执行 expect login.sh
终于不用手输两次密码了.....

防止超时掉线的代码:

#!/usr/bin/expect -f
#首先MAC要安装expect( brew install expect),然后,编写下面的脚本文件保存
#设置超时时间
set timeout 1
#这里设置了跳板机的密码
set password "xxxxxx"
#连接跳板机
spawn ssh xxx

#如果返回的内容包含*yes/no*,发送yes
expect "*yes/no*" {send "yes\n"}
#如果返回的内容包含"*password*",发送你设置的密码+\r(PS.这里的\r一定要加,是回车操作的意思。。。在网上搜了好多没有说明,一直以为是>换行,没有加这个,结果一直执行不成功)
expect "*word:*" {send "$password\r;"}
#登录跳板机成功,如果返回的内容包含"*你的跳板机的名称*",发送连接测试机的命令
expect "*login*" {send "ssh [email protected]\r";}
#同上面一样。。。注意interact是留在测试机上,给用户控制权限,如果不写会直接退出
expect "*word:*" {send "$password\r";
    #interact}
    interact {
        timeout 30 {send "\x20"}
    }
}
#保存为 login.sh 执行 expect login.sh
#终于不用手输两次密码了.....
时间: 2024-08-04 17:48:25

ssh跳板登陆太麻烦,使用expect每次自动登录 利用expect 模拟键盘动作,在闲置时间之内模拟地给个键盘响应的相关文章

分发系统介绍、 expect脚本远程登录、expect脚本远程执行命令、expect脚本传递参数

分发系统介绍 大多数企业都会有这样的需求,业务稍微大一点,它都会去做一些负载均衡,也意味着你的机器有多台,至少得两台,两台的话,你的程序是分别放在了两台机器上或者是多台机器上:假如说要添加一个新的功能,或者说你的程序有一个小bug,那这个时候你如果想这个bug修复,或者说新增一个功能的话,你要去改程序,那很多企业有svn,它是一个代码管理仓库,那我们如果把程序修改了之后呢,先传一份到svn库里边去:如果再智能自动化一点,我可以从咱们服务器上或者测试机上把svn库里的代码直接拽过来,发布到咱们的测

使用expect实现自动登录的脚本

使用expect实现自动登录的脚本,网上有很多,可是都没有一个明白的说明,初学者一般都是照抄.收藏.可是为什么要这么写却不知其然.本文用一个最短的例子说明脚本的原理. 脚本代码如下: ############################################## #!/usr/bin/expect set timeout 30 spawn ssh -l username 192.168.1.1 expect "password:" send "ispass\r&

分发系统-expect讲解,expect脚本远程登录,expect脚本远程执行命令,expect脚本

分发系统-expect讲解 业务越来越大,网站app,后端,编程语言是php,所以就需要配置lamp或者lnmp,最好还需要吧代码上传到服务器上:但是因为业务增加,代码增加,多台机器,就会非常麻烦:这是只需要一个分发系统,就可以把每次更新的代码发布到需要更新的服务器上 expect,是一种脚本语言:通过他可以实现传代码上线,也可以登录机器输入命令 首先要准备一台模板机器,机器的IP,对应用户的密码,通过rsync同步代码,还可以通过expect去执行某些命令 expect脚本远程登录 yum i

利用shell的expect实现自动登录服务器

前言:使用ssh登录内网服务器,每次都要输入以下命令,次数多了就感觉很麻烦. [email protected]:~$ ssh [email protected] [email protected]'s password: 现在,我们可以使用Expect实现复杂的交互过程. Expect是一个用来处理交互的命令. expect常用的四个命令: spawn 启动新的进程 expect 从进程接收字符串 send 用于向进程发送字符串 interact 允许用户交互 使用expect 1. 安装 [

分发系统介绍,expect脚本远程登录,expect脚本远程执行命令,expect脚本传递参数

分发系统介绍 当我们要上线一个新代码的时候,如果机器少,我们的工作量不会很大,很容易完成,如果设备很多,有几十台,上百台的话,那我们的工作量会非常大,而且也不规范,这时,我们就可以用可以用开源的软件,expect脚本语言,进行实现分发系统的功能. expect脚本远程登录首先yum安装expectyum install -y expect 然后写一个expect的远程登录脚本#! /usr/bin/expectset host "192.168.133.132" 这是expect的变量

分发系统介绍,expect脚本远程登录, expect脚本远程执行命令, expect脚本传递参数

分发系统介绍 当我们要上线一个新代码的时候,如果机器少,我们的工作量不会很大,很容易完成,如果设备很多,有几十台,上百台的话,那我们的工作量会非常大,而且也不规范,这时,我们就可以用可以用开源的软件,expect脚本语言,进行实现分发系统的功能. expect脚本远程登录 首先yum安装expectyum install -y expect 然后写一个expect的远程登录脚本#! /usr/bin/expectset host "192.168.133.132" 这是expect的变

linux中使用expect实现自动登录

在实际生产使用中,比如执行批量操作时,我们不想创建ssh认证,需要使用到密码登录或者链接,此时可以使用expect来操作自动添加password: 在centos系统上expect默认是没有安装的,所以首先应先安装expect: yum install expect -y 创建expect脚本: [[email protected] script]# cat ssh_203.exp #!/usr/bin/env expect set timeout 5 set remote_ip "192.16

expect实现自动登录

自动登录主机(ssh) 建脚本item2login.sh,包含如下内容 #!/usr/bin/expect set timeout 30 spawn ssh -p [lindex $argv 0] [lindex $argv 1]@[lindex $argv 2] expect { "(yes/no)?" {send "yes\n";exp_continue} "password:" {send "[lindex $argv 3]\n&

分发系统介绍、expect脚本远程登录、expect脚本远程执行命令、expect脚本传递参数

20.27 分发系统介绍 应用场景 当业务越做越大,服务器需求越来越多,几台服务器的话还好一点:当十几.几十台的时候,工作量就非常大!并且不规范,需要一个模板机分发到各个机器上去. 可以用开源的软件,expect脚本语言,进行实现分发系统的功能. 20.28 expect脚本远程登录 yum install -y expect 自动远程登录,并执行命令 #!/usr/bin/expect set host "192.168.21.130" set passwd "rootro