用原生终端打造Linux的securecrt
条评论 为了访问远程服务器,在windows平台下常用的软件有securecrt、xshell、putty等,这类软件或者收费或者只支持windows平台,对于Linux用户而言,有各种各样的terminal软件,但是相比securecrt这样的商业软件,如终端克隆、自动登陆这样的功能,常见的terminal软件却鲜有支持,本文将介绍如何通过改造默认的terminal打造linux下的’securecrt’,推荐使用terminator或者Yakuake。
在介绍以下方案前,需要提前做两件事:
1.请在~/.ssh 目录下添加config文件并填入如下内容,如文件已存在,追加即可。
Host *
ServerAliveInterval 300
ControlMaster auto
ControlPath ~/.ssh/master-%r@%h:%p
StrictHostKeyChecking no
2.花费几分钟了解一下expect编程语言,安装tmux工具,安装方法不再赘述。
方案一
Step1: 使用expect实现自动登陆,关键部分代码如下:
#!/usr/bin/expect -f
trap {
set rows [stty rows]
set cols [stty columns]
stty rows \$rows columns \$cols < \$spawn_out(slave,name)
} WINCH
set timeout 10
set pin [lindex \$argv 1]
set token [lindex \$argv 0]
spawn ssh $user_name@relay00.example.com
expect "*relay00.example.com's password:" {
send "\$pin\$token\n" }
expect "*example" {
send "ssh $username@example.com\n" }
expect "*password*" {
send "$password\n" }
expect "*$username@example.com*"
send "sudo -iu mysql\n"
expect -re "$"
interact
根据自己的需要改造这段expect脚本,expect行代表的是交互式登陆时,出现在屏幕上的行,send行表示出现屏幕上的字符串时,你向终端发送什么字符串,通过这个过程模拟交互式登陆。
Step2: Run a custom command instead of my shell
意思是,当我启动这个终端或者新建一个窗口的时候,使用我指定的脚本或者命令代替默认的’sh’ or ‘bash’,如下图所示:
通过这种方式,我们可以自己编写脚本,在新建的终端窗口中实现自动登陆。Terminator终端可以实现水平分隔,垂直分隔,自带的Grouping功能也非常的使用,通过上面的改造,可以实现securecrt软件诸多关键功能。
方案二
在方案一实现自动登陆的基础上,通过Linux下的tmux或者screen实现securecrt的众多功能,本文仅介绍tmux。
Step1:本地终端运行tmux,通过如下脚本,可以实现一次自动登陆若干个远程终端,不需要新建多个窗口。
#!/bin/bash
cmd=$(which tmux) # tmux path
session=example # session name
if [ -z $cmd ]
then
echo "You need to install tmux"
exit 1
fi
tmux_init()
{
#term1 是窗口的名称,根据自己的喜好填写
#sec是方案一实现的自动登陆程序的名称,根据自己的实际情况填写,自动登陆程序必须放在$PATH路径下
$cmd new-window -n "term1" -t $session sec
$cmd new-window -n "term2" -t $session sec
$cmd new-window -n "term3" -t $session sec
$cmd new-window -n "term4" -t $session sec
$cmd new-window -n "term5" -t $session sec
$cmd selectw -t $session:1
}
$cmd has -t $session
if [ ! $? -eq 0 ]
then
$cmd new -d -s $session sec
tmux_init
$cmd a -t $session
else
$cmd a -t $session
fi
exit 0
这种方案的优缺点如下:
1.自动克隆多个会话,但是受限与SSH本身,最多可克隆10个窗口
2.远程服务端不需要安装tmux。
3.本地网络异常,会话信息不能保存。
Step2:远程服务器运行tmux
代码同上,新建窗口时,去掉后面的调用程序(sec)即可。
这种方案的优缺点如下:
1.自动克隆多个会话,不受SSH限制,可克隆10个以上窗口。
2.本地网络异常,不影响远程服务器上的会话信息。
3.需要在远程服务端安装tmux软件
4.登陆同一远程终端服务器的用户,可以进入并操作你的会话(暂时没有找到解决方案)
- 本文链接:http://www.darcy.org.cn/2014/05/30/new-day/
- 版权声明:作者拥有版权,转发请注明出处来源