Linux expect 使用(免密登录跳板机)
登录公司的跳板机是挺麻烦的事,首先要ssh,然后输入密码,有的公司可能还要动态密码,前两步操作都是固定的,所以能免去前两步的操作就会方便很多(线上出问题也能尽快登上去,免得紧张密码一直输错,哈哈哈)。
脚本源码
#!/usr/bin/expect set bridge_host "jumper.******.com"
set username "zhengbin"
set password "******"
set timeout spawn ssh "${username}@${bridge_host}"
expect {
"Password:" {
send "${password}\n"
expect {
"verification code:" {
send_user "\nEnter verification code:"
expect_user -re "(.*)\n"
set veri_code $expect_out(,string)
send "${veri_code}\n"
expect {
"${username}@Jumper" {
send "r \r"
}
}
}
}
}
}
interact
脚本解释
shell 脚本解释器
#!/usr/bin/expect
脚本中首先引入解释文件,表明使用哪种 shell 解释器
(shell 是系统的用户界面,提供了用户与内核进行交互操作的一种接口)
set
set timeout
用来设置响应的时间,如果脚本执行或网络问题超过了这个时间,则将不再执行
set 主要用来设置变量,如:
set param_name1
set param_name2 "zhengbin"
spawn
开启会话,接下来通过 expect ... send 来执行交互操作
spawn 后跟上命令,表示开启一个操作会话
expect
期望输出的字符串
send
发送交互字符串,回车为 /n,注意空格
分支
类似于 java 中的 switch
expect {
"case1" {
send "do something \n"
}
"case2" {
send "do something \n"
}
}
结束符
expect eof
等待结束执行,若没有该结束符,脚本可能没有执行完毕就提前退出了
interact
执行完成后,保持控制台的交互状态,可以继续手动输入信息
参考资料
[1] shell 解释器:https://blog.csdn.net/tzy5210/article/details/58603765
[2] Linux expect:https://blog.csdn.net/houmou/article/details/53102051
[3] Linux shell实现ssh自动登录:https://www.jianshu.com/p/b1e0f2242f89
Linux expect 使用(免密登录跳板机)的更多相关文章
- Linux 双向 SSH 免密登录
原理 双向,顾名思义,双方互通,此处的意思是多台 linux 两两免密登录.双向比单向多了些操作,单向只需把某一个linux的公钥发送给其他linux即可,而双向要实现集群中的每一台机器都保存其他所有 ...
- Linux 实现密钥免密登录
Linux 实现密钥免密登录 环境:CentOS 7 一. 创建密钥 登录Linux,进入/root/.ssh/目录下 执行ssh-keygen -t rsa创建密钥一直回车即可,因为是免密所以直接回 ...
- 【Linux】ssh免密登录
一.ssh免密配置 ssh 无密码登录要使用公钥与私钥.linux下可以用用ssh-keygen生成公钥/私钥对,下面我以CentOS为例.有机器A(192.168.1.155),B(192.168. ...
- linux上ssh免密登录原理及实现
因为我的服务器集群需要回收日志到中央进行统一处理,所以需要建立ssh互信关系实现免密登录.关于ssh的使用大家可能都很熟悉了,我们今天主要来讲下ssh连接和免密登录的原理. scp 传输文件 scp( ...
- Linux入门——SSH免密登录
SSH免密登录 1.简介 SSH是一种网络协议,用于计算机之间的加密登录. 本文针对的实现是OpenSSH,它是自由软件,应用非常广泛. 2.初始化公钥私钥 有rsa,dsa两种加密方式,生成的公钥私 ...
- Linux的SSH免密登录(一)
1.从cp/scp命令出发 scp(secure copy)是linux系统下基于ssh登录进行安全的远程文件拷贝的命令. 1. 传递文件到远程 scp local_file remote_usern ...
- linux 远程ssh免密登录
写在前面 先说说需求: 我们平时开发.运维操作linux过程中经常需要实现将远程文件拷贝到本地或者本地文件拷贝到远程:执行远程命令等操作:这个时候建立ssh免密登录应该是一个比较好的选择: 原理 在l ...
- Linux机器间ssh免密登录
前言 一台Linux机器通过ssh的方式连接别的机器或通过scp的方式传输文件,都需要输入密码. 为了解决每次输入密码的困扰,可采用添加密钥的方式实现. 实现过程 源服务器A,目标服务器B. 1.在源 ...
- linux 配置ssh免密登录
一.SSH概念(百度) SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定:SSH 为建立在应用层基础上的安全协议.SSH 是目 ...
随机推荐
- Linux上的压缩与归档
非常非常非常简要的描述而已. 压缩 压缩的简要原理是通过一些算法,拿CPU的计算时间去换磁盘上存储的空间.同时还可节省网络传输中的带宽. 对于文本文件的压缩效果比较好,对二进制程序.图片等文件的压缩效 ...
- Java定时线程池停止超时任务
一.背景题主最近遇到一个问题,本来通过ScheduledExecutorService线程池定时调度一个任务.奈何不知道为啥跑了2个多月,其中一个任务Hang住了,原本定时的任务则出现了问题. 关于定 ...
- php get_magic_quotes_gpc()函数使用
magic_quotes_gpc函数在php中的作用是判断解析用户提示的数据,如包括有:post.get.cookie过来的数据增加转义字符"\",以确保这些数据不会引起程序,特别 ...
- 如何查看jdk和eclipse是几位的(eclipse快捷键)
查看jdk public class rr{ public static void main(String[] args) {String arch = System.getProperty( ...
- Android native thread相关
几个主要的source code路径: /system/core/include/utils/threads.h /system/core/include/utils/Thread.h /system ...
- AngularJS中介者模式实例
在任何应用程序中,中介者模式随处可见. → 有一个事件源,触发事件,传递参数→ 中介者记下这个事件,向外界广播,并带上参赛→ 有一个地方侦听中介者事件,一旦事件源触发事件,就从中介者手里获取事件相关参 ...
- 谈一下Docker与Kubernetes集群的日志和日志管理
本文的测试环境为CentOS 7.3,Kubernetes集群为1.11.2,安装步骤参见kubeadm安装kubernetes V1.11.1 集群 日志对于我们管理Kubernetes集群及其上的 ...
- Android官方导航栏ActionBar(二)—— Action View、Action Provider、Navigation Tabs的详细用法
在上一篇文章(Android之官方导航栏ActionBar)中,我们介绍了ActionBar各组成部分的基本应用.ActionBar除了提供Action Buttons外,还提供了多种导航方式如 Ac ...
- 浅谈压缩感知(二十二):压缩感知重构算法之正则化正交匹配追踪(ROMP)
主要内容: ROMP的算法流程 ROMP的MATLAB实现 一维信号的实验与结果 测量数M与重构成功概率关系的实验与结果 一.ROMP的算法流程 正则化正交匹配追踪ROMP算法流程与OMP的最大不同之 ...
- 为什么和什么是 DevOps?
原文地址 本文内容 为什么 DevOps 什么是 DevOps DevOps 所带来的好处 如何将 DevOps 落到实处? 关于 DevOps 的澄清 参考资料 编写软件之所以难,是因为没有哪两个软 ...