iterm2 配置自动登录跳板机,无需输入密码和google验证码

news2025/1/10 1:27:51

 1、准备:编写Python脚本计算生成google身份验证码,参考python3 实现 google authenticator 认证/校验_我要买GTR45的博客-CSDN博客

脚本拿来就可以用,只需要替换脚本中的secret字段的值为自己的密钥即可

2、在~/.ssh/目录下编写expect脚本

新建expect文件,内容如下:

#!/usr/bin/expect

#配置自动登录跳板机,无需手动输入登录命令、密码和google身份验证码
spawn python3 /Users/username/.ssh/get_googe_token.py
expect eof
set CODE  $expect_out(buffer)
set HOST jump_server's Ip
set USER username
set PASSWORD password
set PORT port
spawn ssh $USER@$HOST -p $PORT
expect {
        "yes/no" {send "yes\r";exp_continue;}
         "*password:*" { send "$PASSWORD\r";exp_continue;}
        "*MFA auth*" {send "$CODE\r";exp_continue;}
        "Opt*" {send "p\r"}
        }

interact

上面代码主要解释

expect花括号中的内容解释:当执行完 spawn ssh $USER@HOST -p $PORT后,检查有没有yes/no,如果有则在终端输入yes;如果下面还需要继续执行expect命令,exp_continue命令一定不能少!!!

"*password*":同理接下来继续检查终端命令行中是否包含有password,如果有则在终端输入密码

"*MFA auth*":终端如果有MFA auth则在终端输入google校验码

"Opt":上一步输入google校验码以后,如果终端命令行有Opt命令,则在输入终端p 

 3、MAC电脑增加配置:利用快捷键 command+o打开iterm2的Profile配置,新增一个Profile,如下图:

4、登录:command+o,打开profiles的窗口,选择刚才新增的profile回车,开始执行expect脚本的命令自动登入

expect简单命令学习:

expect 是一种基于 Tcl(Tool Command Language)的编程语言和工具,用于自动化交互式进程。尽管 Expect 主要基于 Tcl,但它也在其他编程语言中有相应的实现,如 Python 的 pexpect 模块。Expect 用于编写脚本,以模拟用户与命令行应用程序之间的交互,可以用于自动化、自动化测试、自动登录、远程操作等场景。其主要特点是可以处理交互式输入和输出。

Expect 脚本通常用于创建自动化任务,特别是在需要与其他程序或系统进行交互、响应特定提示符或处理复杂输入和输出时非常有用。它允许您编写脚本来模拟用户的交互操作,以实现自动化任务的目标。

虽然 Expect 最初是基于 Tcl 的,但它已经有了多个语言的变种和实现,以适应不同的编程环境和需求。这意味着您可以在多种编程语言中使用 Expect 的功能,以满足您的自动化需求。

#!/usr/bin/expect

# 连接到跳板机
spawn ssh user@jump_server

# 匹配跳板机的提示符,这可以根据实际情况进行调整
expect "jump_server_password_prompt_here"

# 输入跳板机密码
send "your_jump_server_password\r"

# 匹配跳板机成功登录后的提示符,这可以根据实际情况进行调整
expect "jump_server_prompt_here"

# 连接到目标服务器
send "ssh user@target_server\r"

# 匹配目标服务器的密码提示符
expect "target_server_password_prompt_here"

# 输入目标服务器密码
send "your_target_server_password\r"

# 匹配Google身份验证器验证码提示符,这可以根据实际情况进行调整
expect "Google_authenticator_code_prompt_here"

# 输入Google身份验证器验证码
send "your_google_authenticator_code\r"

# 期望进入目标服务器的命令行界面,这可以根据实际情况进行调整
expect "target_server_command_prompt_here"

# 这里可以继续执行其他操作,例如执行命令等
# send "your_command_here\r"

# 等待命令完成并获取输出
expect "output_prompt_here"

# 获取命令输出并打印
set command_output $expect_out(buffer)
puts $command_output

# 退出交互式会话
send "exit\r"

# 等待退出
expect eof

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1037772.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

多台群晖实现按计划WOL网络自动唤醒数据冷备份

几年前买了2盘位的DS218,但是随着照片的增加已经不够用。年中购入了4盘位的群晖DS923、2块16T西数数企业级硬盘、1块2T intel企业级 SSD 1.什么是冷备份 冷备是离线备份,备份好的数据可以单独存取,定期冷备可以保证数据安全,适合…

怎样快速打开github.com

1访问这个网站很慢是因为有DNS污染,被一些别有用心的人搞了鬼了, 2还有一个重要原因是不同的DNS服务器解析的速度不一样。 1 建议设置dns地址为114.114.114.114.我觉得假设一个县城如果有一个DNS服务器的话,这个服务器很可能不会存储…

求组合数(递归版)(杨辉三角形)

description 请编写递归函数&#xff0c;求组合数。 函数原型 double Cmb(int x, int y); 说明&#xff1a;x 和 y 为非负整数&#xff0c;且 x≥y&#xff0c;函数值为组合数 C x y ​ 。 裁判程序 #include <stdio.h> double Cmb(int x, int y); int main() { int m…

基于华为云云耀云服务器L实例下的场景体验 | Docker可视化工具Portainer

基于华为云云耀云服务器L实例下的场景体验 | Docker可视化工具Portainer 1. 简介2. 准备工作3. 工具配置3.1. 配置安全组3.2. 初始化配置Portainer 4. 使用Portainer部署MySQL容器4.1. 创建MySQL容器4.2. 连接MySQL容器 1. 简介 随着云计算时代的进一步深入&#xff0c;越来越多…

【计算机网络笔记三】传输层

端口 在网络中如何标记一个进程&#xff1f; TCP/IP 体系的传输层使用【端口号】来标记区分应用层的不同应用进程。这里说的端口是一个逻辑的概念&#xff0c;并不是实实在在的物理端口。 端口号使用 16 比特表示&#xff0c;取值范围是 0 ~ 65535&#xff0c;端口号分为以…

「大数据-2.0」安装Hadoop和部署HDFS集群

目录 一、下载Hadoop安装包 二、安装Hadoop 0. 安装Hadoop前的必要准备 1. 以root用户登录主节点虚拟机 2. 上传Hadoop安装包到主节点 3. 解压缩安装包到/export/server/目录中 4. 构建软链接 三、部署HDFS集群 0. 集群部署规划 1. 进入hadoop安装包内 2 进入etc目录下的hadoop…

分享40个Python源代码总有一个是你想要的

分享40个Python源代码总有一个是你想要的 源码下载链接&#xff1a;https://pan.baidu.com/s/1PNR3_RqVWLPzSBUVAo2rnA?pwd8888 提取码&#xff1a;8888 下面是文件的名字。 dailyfresh-天天生鲜 Django-Quick-Start freenom-自动续期域名的脚本 Full Stack Python简体中…

竟然可以在一个项目中混用 Vue 和 React?

React和Vue是前端开发中的两大热门框架&#xff0c;各自都有着强大的功能和丰富的生态系统。然而&#xff0c;你有没有想过&#xff0c;在一个项目中同时使用React和Vue&#xff1f;是的&#xff0c;你没有听错&#xff0c;可以在同一个项目中混用这两个框架&#xff01;本文就…

redis学习(一)——初识redis

redis学习&#xff08;一&#xff09;——初识redis 非关系型数据库 redis是非关系型数据库&#xff0c;和mysql不同&#xff0c;redis中的所有数据都是以key&#xff1a;value形式存在的 两者区别 SQL | NoSQL 结构化 | 非结构化 关联的 | 无关联 sql查询 | 非sql ACI…

[python 刷题] 22 Generate Parentheses

[python 刷题] 22 Generate Parentheses 题目&#xff1a; Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses. 这里 well-formed 指的就是合法的括号配对&#xff0c;这里会提两个解 第一个是暴力解&#xff0c;也就…

服务注册发现_服务发现Discovery

修改payment8001的Controller /*** 支付控制层*/ Slf4j RestController public class PaymentController {Autowiredprivate DiscoveryClient discoveryClient;GetMapping("/payment/discovery")public Object discovery(){// 获取所有微服务信息List<String>…

栈和队列2——队列的实现

栈和队列2——队列的实现 一&#xff0c;前言二&#xff0c;队列的定义三&#xff0c;队列的结构四&#xff0c;队列的实现4.1队列初始化4.2队列的销毁4.3队列的尾插4.4队列的删除4.5找队头的数据4.6找队尾的数据4.7判断为空4.8计算长度 五&#xff0c;小结 一&#xff0c;前言…

STL常用遍历,查找,算法

目录 1.遍历算法 1.1for_earch 1.2transform 2.常用查找算法 2.1find&#xff0c;返回值是迭代器 2.1.1查找内置数据类型 2.1.2查找自定义数据类型 2.2fin_if 按条件查找元素 2.2.1查找内置的数据类型 2.2.2查找内置数据类型 2.3查找相邻元素adjeacent_find 2.4查找指…

简易介绍如何使用拼多多商品详情 API。

拼多多&#xff08;Pinduoduo&#xff09;是中国一家快速发展的电商平台&#xff0c;为了帮助开发者更好地接入拼多多&#xff0c;平台提供了丰富的 API 接口供开发者使用&#xff0c;其中包括获取拼多多商品详情的 API。接下来&#xff0c;我们将介绍如何使用拼多多商品详情 A…

重学 HashMap

文章目录 1.从 Map 接口入手1.1 从 JDK 1.0 的 Dictionary\<K,V\> 抽象类讲起1.2 Map 接口中的集合视图又是怎样的&#xff1f;1.3 为什么 JDK 官方不推荐使用可变对象作为 Map 的键&#xff1f;1.4 为什么映射不应该将自己作为键&#xff0c;而可以作为值&#xff1f;1.…

python基于轻量级卷积神经网络模型开发构建眼疾识别系统

常见的眼疾包括但不限于以下几种&#xff1a; 白内障&#xff1a;白内障是眼睛晶状体变得模糊或不透明&#xff0c;导致视力下降。它通常与年龄相关&#xff0c;但也可以由其他因素引起&#xff0c;如遗传、外伤、糖尿病等。 青光眼&#xff1a;青光眼是一组引起视神经损伤的眼…

HTTP 协议的定义,工作原理,Fiddler的原理和使用,请求的内容

文章目录 一. HTTP协议是什么?1.HTTP工作原理2.HTTP协议格式2.1抓包工具的原理2.2抓包工具的使用2.3 HTTP协议的内容请求首行请求头(header)空行正文(body) 一. HTTP协议是什么? HTTP (全称为 “超文本传输协议”) 是一种应用非常广泛的 应用层协议. "超文本"是指…

异步电机直接转矩控制学习

导读&#xff1a;本期文章对异步电机直接转矩控制进行梳理。DTC包括转速外环、磁链观测器、滞环和电压矢量离线开关表。离线电压矢量开关表共分为两种&#xff1a;添加零矢量和未添加零矢量。 如果需要文章种的仿真模型&#xff0c;关注微信公众号&#xff1a;浅谈电机控制&am…

同城配送商城小程序的作用是什么

本地生活服务如餐饮、服装、鲜花、百货等产品都具备同城经营属性&#xff0c;在产品销售方面普遍是以实体店为主做三公里生意&#xff0c;而随着互联网线上深入&#xff0c;很多商家会通过进驻外卖平台获得生意&#xff0c;当然也有越来越多的商家选择自建商城完成品牌的配送平…

机器学习第十四课--神经网络

总结起来&#xff0c;对于深度学习的发展跟以下几点是离不开的: 大量的数据(大数据)计算资源(如GPU)训练方法(如预训练) 很多时候&#xff0c;我们也可以认为真正让深度学习爆发起来的是数据和算力&#xff0c;这并不是没道理的。 由于神经网络是深度学习的基础&#xff0c;学…