前言公司有多台服务器,必须先登录跳板机,再从跳板机登录服务器。频繁输入指令非常繁琐。有没有更好的方法来实现它。expect可以完美的帮助你接触概念Tcl:(Toolcommandlanguage)一种非常强大的脚本语言expect:基于Tcl开发的语言包,请安装except核心命令send:命令向进程发送字符串。expect:命令等待一些进程。expect支持正则表达式,可以同时等待多个字符串,对每个字符串进行不同的操作。expect还理解特殊情况,例如超时和遇到文件结尾。spawn:激活一个Unix程序以交互方式运行。interact:允许用户与sendcommandusagesend"hellogod.wei"outputsendcommand将字符串直接发送给进程如果我想运行命令,我可以发送"pwd\r"expectcommand来接受过程的输出,然后我们可以通过判断输出结果来进行不同的操作。expectpatlist1action1patlist2action2....这个命令一直等到当前进程的输出匹配上面的模式之一,或者等到时间超过特定的时间长度,或者等到遇到文件结束。例如#!/usr/bin/expectexpectapplesend"Iwantanapple\n"outputexpect会监听当前进程的标准输出,如果符合预期,继续运行下面的命令spawn新进程处理spawn命令用于启动一个新进程。spawn之后的send和expect命令都与spawn打开的进程进行交互)spawnsshshiwei.cao@godwei.comexpectapplesend"Iwantanapple\n"这样当进程返回apple时,会输出Iwantan到进程appleinteract:允许用户交互,那么如果我想在执行操作后保持连接而不关闭远程终端怎么办,这时interact就派上用场了。spawnsshshiwei.cao@godwei.cominteract这样就可以保持与远程服务器的连接了吗?这样我们就可以先连接跳板,然后在跳板上执行ssh命令连接远程服务器。