expect 基于tcl演变而来,是一个免费的编程工具,用来实现自动的交互式任务,而无需人为干预。说白了,expect就是一套用来实现自动交互功能的软件。 我们运行命令、脚本或程序时,
expect 基于tcl演变而来,是一个免费的编程工具,用来实现自动的交互式任务,而无需人为干预。说白了,expect就是一套用来实现自动交互功能的软件。
我们运行命令、脚本或程序时,这些命令、脚本或程序都需要从终端输入某些继续运行的指令,而这些输入都需要人为的手工进行。而利用expect,则可以根据程序的提示,模拟标准输入提供给程序,从而实现自动化交互执行。
常用命令
spawn 启动新的进程
expect 从进程接收字符串
send 用于向进程发送字符串
interact 命令主要用于退出自动化,进入人工交互,需要和spawn 配合使用
eof 退出命令窗口
exp_continue 循环匹配
$argc 表示参数个数
而参数值存放在$argv中,比如取第一个参数就是[lindex $argv 0]
条件语句后要有一个空格隔开
if {} {} eles {}
#!/bin/bash mv /home/duanyu/git/common_api/target/common_api-1.0.1.war /home/duanyu/git/common_api/target/ROOT.war expect ./combot.exp
#!/usr/bin/expect set timeout 30 spawn scp /home/duanyu/git/common_api/target/ROOT.war [email protected]192.168.1.46:/usr/local/commo_apache-tomcat-8.5.35_8080/webapps expect { "password:" {send "123\r"} } expect eof spawn ssh [email protected]192.168.1.46 expect { "password:" {send "123\r"} } expect { "\\\$" {send "cd /usr/local/www/common_apache-tomcat-8.5.35_8080/logs \r"} } expect { "\\\$" {send "sudo tail -f catalina.out\r"} } expect { "密码:" {send "123\r"} } interact