有时候,我们会遇到一些比较复杂的脚本需求,比如一个例子:
A服务器是生产线上服务器,负责交易,B服务器是合作公司放在本公司的一个专门用于连接的vpn服务器, c服务器是本公司的一台线下结算服务器, d服务器是合作公司的ftp服务器,只允许本局域网内访问。
四个服务器之间的权限关系:
d服务器只允许B来访问,b只允许A来远程登陆,c要获取Dftp服务器上的数据。
并且这个ftp服务器上的数据时要动态获取每天的文件,是以时间命名的。
这个需求,说实话,如果有一个公钥认证的ssh,或许会简单点,但是,偏偏服务器就是没有做,而且,经理怕出现错误,不允许改成ssh公钥模式。
那么这么鸡肋的需求,怎么完成?
autoexpect 来帮您!
首先 确定你装了autoexpect 包
然后 在c服务器上录制
比如当前目录在c haha用户的主目录下:
autoexpect -p -f 自己命名脚本.exp
开始录制:
先ssh到a服务器上,紧接着ssh到b服务器上,然后,telnet 到D服务器上,最后,执行d服务器上的脚本,下载动态时间文件。然后在逆向顺序传送回C服务器。
ok 我知道你们已经晕了。
关于动态获取时间文件的需求,在D服务器上,做了一个ftp自动取文件的脚本。
然后exit 退出完成脚本制作。
需要注意的是,该脚本如果被移动,则需要先cd 到脚本制作的文件夹位置,然后再绝对路径执行脚本。