ITERM2 自动登录跳板机脚本(多跳、带动态TOKEN)

2023-11-05


代码如下:

设置方式是:iterm2-preference-Profiles-新建一个profile,并设置Name为a, Command为 /Users/XXX/Desktop/a.sh 在sen text as start内传入4个参数:USER JUMPER_SERVER LOG_SERVER PW

在桌面新建文本文件输入以下内容并保存为a.sh

在iterm中右键new window并选择a,即能自动执行。

#!/usr/bin/expect

set timeout -1

### prepare the variable

set USER [lindex $argv 0] 
set JUMPER_SERVER [lindex $argv 1]
set LOG_SERVER [lindex $argv 2]
set PW [lindex $argv 3]

### login the jump server
spawn ssh $USER@$JUMPER_SERVER
expect {
	"]"
        {
            # already login
            send_user "already login\n"
        }
    "(yes/no)?"
    {send "yes\n"; exp_continue}
    "DomainPassword*:"
    {
        send_user "\nEnter your token: "
	expect_user -re "(.*)\n"
	set TOKEN           "$expect_out(1,string)"
 send_user "\n"
        #get the token from user
        send "$PW$TOKEN\n"
        send_user "**********\n"
    }
}

expect "]"
send "ssh $LOG_SERVER\r"
expect "pass*:"
send "$PW\n"
expect "$USER@*"

interact

部分代码说明如下:

expect{}内嵌入多个""时,依次判断是否满足,如果满足则执行{}的内容,并跳出该expect,继续向下执行;如果希望执行完毕{}后还需要继续下一个""则需要添加exp_continue.

执行完脚本后如果不带interact则自动退出。

使用for()循环存在异常情况导致无法正确interact.



对于带TOKEN的登陆方式,如果想新开一个窗口会非常麻烦;此时可以按如下在MAC本地设置,则无需重复输入TOKEN(可以使用Ctrl+D等方式进行复制)

vim .ssh/config
//增加以下内容即可
host *
ControlMaster auto
ControlPath ~/.ssh/master-%r@%h:%p



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ITERM2 自动登录跳板机脚本(多跳、带动态TOKEN) 的相关文章

  • 从哪里获取 iostream.h

    我正在尝试在 Linux 中做一些事情 但它抱怨找不到 iostream h 我需要安装什么才能获取此文件 这个标准头的正确名称是iostream没有扩展名 如果您的编译器仍然找不到它 请尝试以下操作 find usr include na
  • 如何从程序内部获取指向程序的特定可执行文件部分的指针? (也许是诽谤)

    我在 Linux 环境中 需要编写一个程序来检索放置在其可执行文件的某个部分中的一些数据 那么 如何从程序内部获取指向程序某个部分 通过其名称 的指针呢 我知道可以使用elf getdata 将节的索引作为参数传递给 get 和Elf Da
  • 如何指定配置脚本的包含目录

    我的工作场所有一个 Linux 系统 其中包含相当旧的软件包 并且没有 root 访问权限 我正在从源代码编译我需要的包 prefix somewhere in homedir 我的问题是我只是不知道如何说服配置在特定目录中查找头文件 源码
  • 如何通过不同的接口路由 TCP/IP 响应?

    我有两台机器 每台机器都有两个有效的网络接口 一个以太网接口eth0和 tun tap 接口gr0 目标是使用接口在机器 A 上启动 TCP 连接gr0但然后让机器 B 的响应 ACK 等 通过以太网接口返回 eth0 因此 机器 A 发出
  • 在 vimrc 中切换匹配

    我的 vimrc 文件中有以下几行 hi ExtraWhitespace cterm NONE ctermbg green ctermfg green guibg green guifg green match ExtraWhitespac
  • 如何在 Linux 中向热敏打印机发送 ESC/POS 命令

    我正在尝试在热敏打印机上发送 ESC POS 命令 但每当我发送它们时 热敏打印机都会将它们打印为文本 而不是作为命令执行它们 我在 prn 文件中编写这些命令 每当我执行 lp 命令来打印文件时 这些 prn 文件也会被打印 但作为文本
  • grep 彩色线条

    我编写了一个简单的 PHP shell 脚本 它解析文件并输出某些元素 它产生大量的输出 采用不同的 bash 颜色 绿色表示正常 黄色表示警告 红色表示错误等 在开发过程中我想过滤掉一些行 例如 所有包含红色文本的行 我可以使用grep
  • Linux 中的 Windows NAmed Pipes 替代品

    我们正在将现有的 Windows 代码移植到 Linux 我们使用 ACE 作为抽象层 我们使用 Windows 命名管道与多个客户端进行通信并执行重叠操作 linux 下这个相当于什么 我检查了linux命名管道 FIFO 但它们似乎只支
  • 点击界面没有出现

    我决定添加一个点击界面并在我的代码中使用它 但我能够得到它的状态 sudo ip f link tuntap add tap10 mode tap sudo ip link set tap10 up 之后当我执行 ip link 时 tap
  • EULA 接受 Bash 脚本

    我有一个尝试安装垃圾箱的脚本 除了 bin 在 more 中打开 EULA 之外 一切正常 在脚本再次开始并自行完成安装之前 您必须手动 ctrl c 退出此 more 实例 因为这更多的是逃离 shell 所以脚本在打开后不知道要运行什么
  • 在 Linux 服务器上创建和编辑 MS-Word 文档?

    希望开发处理文档的服务器端应用程序 源文档大多是MS Word 2003 2007 即MS版本的Docx 希望服务器应用程序能够在linux或windows上运行 想知道在linux下读写MS Word文件最好的工具或库是什么 兼容性是最重
  • gpg:抱歉,根本没有请求终端 - 无法获取输入

    解密时出现以下错误 eyaml decrypt s ENC and the key goes on here gnupg quiet no secmem warning no permission warning no tty yes de
  • SIGHUP 用于重新加载配置

    根据signal 7 SIGHUP用于检测控制终端的挂起或控制进程的死亡 然而 我遇到过很多 OSS 守护进程 服务 其中SIGHUP用于启动配置的重新加载 这里有一些例子 hostapd sshd snort etc 这是实现重新加载的标
  • 重新链接匿名(未链接但打开)文件

    在 Unix 中 可以创建匿名文件的句柄 例如 使用 creat 创建并打开它 然后使用 unlink 删除目录链接 留下一个带有 inode 和存储的文件 但没有可能的方法重新打开它 此类文件通常用作临时文件 通常这就是 tmpfile
  • 设置 Vim 背景颜色

    当我尝试更改背景颜色时 vimrc或者直接在 Vim 中使用以下命令 set background dark 这根本不影响我的背景 也没有light选项 不过 当我运行 gvim 时 看起来还不错 有没有办法在不更改 Konsole 设置的
  • 使用 terminfo 的终端颜色?

    我正在编写一个 C 类 允许在终端中使用颜色 我希望它适用于每个终端 在支持真彩色 24 位 的终端上打印 在支持它的终端上具有 256 色 6x6x6 其他都是基本的 16 种颜色 我曾经使用 termcap 编写过一次 C 函数 并且我
  • C# - OPC-UA 服务器应用程序尚未在 Linux 计算机中创建 PKI 证书

    当我跑步时OPC UA serverWindows 机器中的 C 应用程序 然后 OPC UA 服务器已创建证书路径C ProgramData OPC Foundation pki own 并在此路径中生成一些证书 但是当我在中安装 OPC
  • 如何从外部模块导出符号?

    我在内核源代码树之外进行编码 有两个模块 第一个printt有一个功能printtty 将字符串打印到当前 tty 以及第二个模块hello这会调用printtty 在初始化期间 我已经添加了EXPORT SYMBOL printtty 在
  • 如何获取 bash 中从 Ping 接收到的数据包的百分比?

    当 ping 主机时 我希望输出仅显示收到的数据包 已发送 5 个 的百分比 我想我需要使用grep不知怎的 但我不知道如何 我是 bash 编程的新手 这是我所在的地方 ping c 5 q host grep grep 中应该包含什么
  • SVN 不断提示我输入密码并拒绝缓存我的凭据

    环境 Eclipse Indigo Ubuntu 11 04 Subclipse 1 6 SVN 客户端 Subclipse RabbitVCS 我通过 svn ssh 连接 我的网址如下所示 svn ssh 我的名字 我的域名 路径 我可

随机推荐

  • Android 判断设备是否模拟器

    用过一些网上提供的方法 我这边使用夜神模拟器测试 结果检测为真机 于是想了一个从cpu架构信息来判断的方法 同时支持x86和arm的应该就是模拟器 代码如下 获取 cpu 信息 public static String getCpuInfo
  • Java程序员从阿里面试回来,最后成功拿到阿里offer!

    最近有很多朋友去目前主流的大型互联网公司面试 阿里巴巴 京东 美团 滴滴 面试回来之后会发给我一些面试题 有些朋友轻松过关 拿到offer 但是有一些是来询问我答案的 其实本来真的没打算写这篇文章 主要是自己得记忆力不是很好 不像一些记忆力
  • 百度首页模仿制作(html)详解

    相信大姐学习html这一门语言的第一步一般都是做一个百度首页或者菜鸟教程首页 菜鸟教程首页模仿戳这里 什么的吧 下面就来分享一下我所写的百度首页的模仿过程 1 分析布局 这里我将他的布局分为三大块 上中下各一个div块 2 往div块中添加
  • 【Linux】Ubuntu下C语言访问MySQL数据库入门

    使用的系统是Ubuntu 11 10 数据库是MySQL MySQL数据库环境配置 首先需要安装MySQL客户端和服务器 命令行安装方式为 sudo apt get install mysql server mysql client 然后
  • 一个老鸟发的公司内部整理的 Android 学习路线图 Markdown 版本

    转自 https www diycode cc topics 122 jixiaohua发了一篇一个老鸟也发了一份他给公司内部小伙伴整理的路线图 另一份 Android 开发学习路线图 可惜不是MarkDown格式的 所以jixiaohua
  • html盒子毛玻璃效果,css毛玻璃效果(外加background属性)

    前因 后果 二话不说 上效果 注意 此方法只适合body设置背景图时的模糊 页面布局方面 主要父元素为body 子元素为想要的效果 涉及到的知识点 background filter 定位 伪元素 flex布局 主要为子元素水平居中使用 z
  • idea 快捷键

    注 有些操作的快捷键做了更改 和IntelliJ Idea默认的快捷键不一样 动作 快捷键 说明 Move Caret to Code Block End Ctrl 诸如 围起来的代码块 使用该快捷键可以快速跳转至代码块的结尾处 Move
  • Qt线程与界面

    看了个开源库Stacer 里面使用到了QConcrrent 这个使用很方便 这里简单记录一下总结下Qt的线程创建方法 Qt线程创建方法 QThread继承 QObject moveToThread QConcurrent run Qt中提到
  • pthread_mutex_t

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 1 互斥锁创建 有两种方法创建互斥锁 静态方式和动态方式 POSIX定义了一个宏PTHREAD MUTEX INITIALIZER来静态初始化互斥锁 方法如下 pthrea
  • Mybatis使用注解方式配置

    目录 1 介绍 2 初始化工程 2 1 导包 2 2 导配置 3 使用注解增删改查 3 1 环境准备 3 1 1 建库建表 3 1 2 创建Student实体类 3 1 3 创建StudentDao接口 3 1 4 配置映射关系 3 2 查
  • Python Matplotlib 实用小技巧!

    转自 网络 今天给大家介绍Matplotlib绘图实用的小技巧 1 添加标题 title matplotlib pyplot 对象中有个 title 可以设置表格的标题 import numpy as np import matplotli
  • django前端模板循环多个list

    这一部分主要涉及到后台View的设计 前端HTML页面的设计 后台设计View from django views generic import View class ForTrView View def get self request
  • PCL 区域生长分割(C++详细过程版)

    区域生长 一 概述 二 代码实现 三 结果展示 1 原始点云 2 聚类结果 四 相关链接 一 概述 区域生长分割是PCL里经典的点云聚类分割算法 具体算法原理和实现代码见 PCL 区域生长分割 为充分了解算法实现的每一个细节和有待改进的地方
  • display:none元素不可见,可通过JS方法把它修改为可见

    页面元素无论用什么xpath都无法定位 by id class name都试过了 可以去页面看看是否这个元素的display是none display none方法是设置元素不可见 所以解决办法就是首先通过JS方法把它修改为可见 js do
  • Kafka 创建 两个topic 一个用于发送信息 一个用于接收Flink处理之后的信息

    Kafka 创建 两个topic 一个用于发送信息 一个用于接收Flink处理之后的信息 Kafka生产者Java代码 package cn oneseek import cn oneseek util JsonData import or
  • 网络工程专业毕设题目选题大全

    文章目录 0 简介 1 如何选题 2 最新网络工程选题 2 1 Java web SSM 系统 2 2 大数据方向 2 3 人工智能方向 2 4 其他方向 4 最后 0 简介 学长搜集分享最新的网络工程专业毕设毕设选题 难度适中 适合作为毕
  • vue入门教程之-属性、事件和双向绑定

    vue入门教程之 属性 事件和双向绑定 欢迎关注博主公众号 java大师 专注于分享Java领域干货文章 关注回复 资源 免费领取全网最热的Java架构师学习PDF 转载请注明出处 https www javaman cn vue vue
  • 【JAVA

    package learn import java awt import javax swing import java awt event public class PinBall private Frame frame new Fram
  • 中国金融牌照全解读

    前言 金融牌照 即金融机构经营许可证 是批准金融机构开展业务的正式文件 目前金融许可证由银监会 证监会和保监会等部门分别颁发 金融监管根据时段划分为事前监管 事中监管 事后监管 市场准入制度是事前监管的核心 金融许可证则是市场准入制度的常态
  • ITERM2 自动登录跳板机脚本(多跳、带动态TOKEN)

    代码如下 设置方式是 iterm2 preference Profiles 新建一个profile 并设置Name为a Command为 Users XXX Desktop a sh 在sen text as start内传入4个参数 US