iTerm2结合expect实现一键登录ssh服务器_iterm expect vim_东晨雨的博客-程序员宅基地

技术标签: java  JAVA基础  vim  后端  

        作为一名程序员,每天免不了要远程链接服务器,一般情况下公司的服务器都在内网,访问一般先登陆跳板机,然后再通过跳板机登陆到相应的服务器进行操作。这样的话,我们在登陆过程中输入密码较为麻烦,如果有一个自动化工具,那么每次操作就方便多了,接下来介绍具体的操作方法:

 

01 自动登陆的实现原理

       由于跳板机上无法保存文件,因此无法通过配置秘钥来实现免密登陆的功能。但是我们可以通过Linux的shell脚本嵌套expect来实现。

       expect基于tcl语言,是一个控制交互式程序的工具。不管是交互性还是非交互性的操作,expect都能实现。基于此,才能有接下来利用ssh进行登录远程服务器的操作。

 

02 实现步骤(以iTerm2为例)


1.  打开iTerm2终端,输入 cd ~/.ssh ,进入到账户的的主目录下的~/.ssh目录。

2. 进入到~/.ssh目录后,创建一个关于自动登录shell文件,例如:命名为iterm2_login,执行 touch iterm2_login 命令创建好文件。

3. 使用命令 vi iterm2_login 打开创建好的文件,写入内容:

#!/usr/bin/expect#trap sigwinch spawned#捕获窗口大小改变的信号,解决expect导致窗口缩放,vim错乱的问题trap {
       set rows [stty rows]    set cols [stty columns]    stty rows $rows columns $cols < $spawn_out(slave,name)} WINCH
#设置超时时间set timeout 300
set HOST [lindex $argv 0] 
set TERMSERVIP 跳板机服务器ipset TERMSERVUSER 跳板机用户名set TERMSERVPWD 跳板机密码set UATUSER 内网用户名set UATPWD 内网密码
# 登录跳板机spawn ssh -l $TERMSERVUSER $TERMSERVIPexpect {
       "yes/no" {send "yes\r";exp_continue;}    "*password:*" { send "$TERMSERVPWD\r" }}# 登录内网expect "*$TERMSERVUSER@*" {send "ssh $UATUSER@$HOST\r"}expect {
       "yes/no" {send "yes\r";exp_continue;}    "*password:*" { send "$UATPWD\r" }}# 交互模式,脚本执行完后控制权会交给控制台interact

4. 给文件可执行权限 chmod +x iterm2_login

 

5. 配置Profile

(1)打开iterm2,打开profiles(再者菜单Profiles->Open Profiles),点击右下角的Edit Profiles ,里面选左下角的 + 号增加一条,配置如下图所示:

 

Name: 无限制,尽量方便自己识别Tags: 标签,可写可不写,服务器多的话建议设置一个send text at start: /Users/xxxx/.ssh/iterm2_login 内网服务器IP也可以写成 ~/.ssh/login_inner 内网服务器IP

 

【微语】

生活就是知道自己的价值、自己所能做到的与自己所应该做到的。  

——雨果《莎士比亚论》 

 

 

更多及时干货,请关注微信公众号:JAVA万维猿圈

更多及时干货,请关注微信公众号:JAVA万维猿圈 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39076229/article/details/105034223

智能推荐

实心菱形_weixin_30530339的博客-程序员宅基地

package com.one;/** * @program: com.one * @description: 打印实心菱形 * @author: Mr.Lin * @create: 2019年7月2日 **/public class One23 { public static void main(String[] args) { for(int i=1;i&lt;=4;i++) { f...

JVM GC 之二对象分配_wingedFish-李先生的博客-程序员宅基地

JAVA运行时各个数据区域的苞丁解牛,JAVA对象的生死判定,JVM内存的清理,JAVA对象迁徙

GraphSim:基于多尺度卷积集匹配的图形相似度计算_卷积相似度_IT小白自习室的博客-程序员宅基地

GraphSim:基于多尺度卷积集匹配的图形相似度计算 本篇论文是:Learning-based Efficient Graph Similarity Computation via Multi-Scale Convolutional Set Matching。需要注意的是,graph不同于image,graph是图表,是由边和节点生成。1. 简要介绍计算两个图形的相似度在多个领域都是一个核心的问题。而传统的方法(GED、MCS)会带来很大的计算量;之后提出了一些启发式算法和神经网络的训...

Android 通过JNI C++进行MD5加密_jni md5_gouphigh2的博客-程序员宅基地

Android Studio使用JNI之前觉得是一件比较麻烦的事,官方文档也不多,有点无从下手。本篇以CMake方式说说如何利用JNI方式使用C++进行MD5加密,这样经过Native的方式不容易被反编译出来,所以加点复杂的盐,安全性会更高。

eclipse validating 卡着一直不动_weixin_34319374的博客-程序员宅基地

处理方式:1、对项目的.project文件去掉下面两个配置 org.eclipse.wst.jsdt.core.javascriptValidator和org.eclipse.wst.jsdt.core.jsNature2、重启Eclipse后则正常。转载于:https://www.cnblogs.com/cat-fish6/p/9099533.html...

.Net Core微服务系列--配置中心_ailou5431的博客-程序员宅基地

什么是配置中心简单来说配置中心就是对配置进行管理的一个中心。对于配置这个司空见惯的东西,我们想想为什么对于应用程序需要各种各样的配置来支撑?我们人类没有办法掌控和预知一切,所以映射到软件系统这个领域,我们需要人为的预留一些线头,以便在未来呢,拨弄这些线头调整系统的飞行状态。而这些线头就是我们程序中的配置,所以说配置是用来在程序运行状态时动态调整行为的,比如说日志级别,数据库连接...

随便推点

三种方法实现两栏等高自适应布局(《CSS世界读书笔记》)_实现两栏自适应_Zoey Chou的博客-程序员宅基地

前言本文为张鑫旭《CSS世界》读书笔记,代码实现思路亦来源此书。效果需求:实现两栏布局,要求无论哪一栏的内容多,两栏高度均以最高一栏为准,两栏的背景色需和容器高度相等,即竖直方向铺满容器。【TIPS】这里为什么不用height: 100%呢?原因在于必须给父元素设定具体高度值,此属性值才会起作用,但大部分情况下,我们是不太会给父元素的高度定死的。代码实现:方法一:使用 di...

mysql 清理索引碎片_weixin_30267691的博客-程序员宅基地

alter table t_bl_case ENGINE=INNODB转载于:https://www.cnblogs.com/shanshanyuxuan/p/10656497.html

Lua语法特性_bloodsuckerccj的博客-程序员宅基地

1.闭合函数(closure)理论上来说,Lua的所以函数都应该称之为闭合函数,但是,这种反人类的做法,我们还是抛弃吧~按书上的描述,一个闭合函数就是:一个函数加上该函数所需访问的所有”非局部的变量“。理论什么的,很烦人,来看看一个函数:function count()    local i = 0;    return function()              i

关闭ubuntu图形化界面运行程序,防止界面卡死_Ceri的博客-程序员宅基地

关闭图形化界面:终端运行sudo systemctl set-default multi-user.targetreboot启动图形化界面:sudo systemctl set-default graphical.target

Java中间件-程序员宅基地

Java问题:中间件是什么?和朋友聊天时被问到中间件是什么?一时有点语赛,感觉熟悉这个概念,但又完全不知道如何清楚的向别人讲这些。网络上搜了一下,也没找到让自己很认可的说法,有的说非业务的技术类组件,是操作系统之上和业务逻辑之下的中间层都可以称之为中间件,有说用于解耦底层逻辑和业务应用的组件,也有说是一些可复用的后台组件,似乎有点道理但又没完全讲清楚这个概念。中间件就是在大型网站中,帮助各子模块间实现互相访问,消息共享或统一访问等功能的软件产品。常见的有:远程服务框架中间件:主要解决各子模块之间互相

百度网盘外链采集分析 爬取百度网盘用户分享 自建百度网盘文件链接搜索引擎_88 &/:_86$-c5_小黄人软件的博客-程序员宅基地

我建的网盘文件搜索引擎 http://s.supermindsoft.com/ 找一个订阅超多用户的uk, 爬取用户的所有订阅用户uk和粉丝数,不断深入 爬取。得到一个按粉丝数从高到低排列的用户uk表。从数据库获取粉丝超多用户的uk,采集他们的所有分享文件名和对应链接,存入数据库。从网站前台分词搜索。

推荐文章

热门文章

相关标签