autoexpect工具和scp命令

昨天从同事那里学到一个很有用的工具,linux典型安装中会自带该工具autoexpect.

假设你需要登录到一个远程服务器上,执行一些脚本,这个过程即可通过autoexpect工具进行自动记录并且变成一个脚本.

在我平常打包时需要做几件事情,从48服务器(A)传几个文件到45服务器(B)上,然后登录到45服务器(B)执行几个shell脚本,然后再从45服务器上telnet到191服务器(C)上,在191上再执行几个shell脚本,回到45之后再将几个文件传回到48.

简而言之,即从A传文件到B—>登录B—>执行几个B上的命令—>登录C—>执行几个C上的命令—>从B传文件到A上—>Over.

下面说明如何使用autoexpect使这个过程自动化:

#autoexpect -f auto ssh B

执行这个命令后,auexexpect工具会提示你输入登录密码,同时开始记录从此之后的所有操作,直到你退出A服务器,因此我从B上向A索取文件,再在B上执行所需的命令,再telnet到C上执行脚本,最后再从B上把文件发送给A,这些过程都将被记录到auto这个脚本文件中.

今后,我只需要在A上执行expect auto这个命令即可轻松的等待它自动化完成上述工作啦~:)

PS:

在A服务器上传输文件到B时可以使用scp filename username@B:/home/public/

这句话的意思是,将A服务器上当前目录下的filename文件传输到B服务器的/home/public目录下.

PS:不过autoexpect是通过明文保存服务器的登录密码的,有需要的人可以了解一下如果对密码加密.

WordPress database error: [Table 'db_rain_blog.wp_comments' doesn't exist]
SELECT * FROM wp_comments WHERE comment_post_ID = '8' AND comment_approved = '1' ORDER BY comment_date

Leave a Comment