我的登录脚本发展史

到公司以后,公司不能直接登录 到线上服务器,而必须通过一个中间服务器,中间服务器需要一个动态密码验证,无法自动化,于是很郁闷,分别尝试了三种办法

 

1. 在内网开tunel 端口,办公机直接ssh到这个端口即可.

     Ok,但是一周后被公司安全组扫描 发现,禁止我继续这样.

 

2. 既然如此,我可以在内网用squid开http代理,或者用ssh开socks代理,然后连这个端口就行了

    理论上也ok,而且被公司扫描到的可能性很小, 但是预防为主,所以没搞,

 

3. 用expect脚本登录,只需要手动输入一个动态密码就ok,而且使用ssh复用连接,下次不需要输动态密码

   问题是expect脚本后,在服务器开screen ,之后resize gnome-console, screen会坏掉,这是一个悲剧,尝试了很久,没搞定这个问题,开始寻找能够发送键盘按键的软件(模拟按键)找到结果便是4,很赞: 

 

4. xdotool:

    xdotool是x11自动化测试工具,能够模拟键盘,鼠标的各种输入.

    目前来看没问题,而且还能自动设置gnome-console的编码为GBK,大赞啊!!!

 

 

附Expect脚本:

 

#注意. alias r="export LANG=GBK && ssh.exp"                                   
#所有敏感部分被替换为 ....
set pwd [lindex $argv 0]
set timeout  3

spawn ssh ........

expect "......." { send "$pwd\r"}\
        timeout {}

expect "*......*" { send "ssh ............. \r" }

expect "*password*" { send ".......\n" }
expect "........ " { send "screen -ls\n" }
interact
 

附xdotool脚本: 

 

#!/bin/sh
xdotool key  alt+t Down Down Right Return  # 这是相当于键盘按 alt+t ,出gnome-console的菜单,然后选择响应的项.
xdotool type "r1"   #实际上是 ssh xxx@xxx
xdotool key  Return Return                                                      
xdotool type "ssh [email protected]"  # 再ssh到别个机器
xdotool key  Return Return 
sleep 0.3
xdotool type "xxxx"                   #  这里需要密码,因为中转机器无法记忆密码.
xdotool key  Return Return
xdotool type "screen -ls"         #真的命令.
xdotool key  Return Return

xdotool type "screen -r "

 

这场懒人与公司制度的斗争还没有结束,继续。。。

你可能感兴趣的:(脚本)