expect介绍
expect提供自动交互的的一个工具
案列
登录远程服务器不用手工输入密码
#!/usr/bin/expect
set timeout 20
spawn ssh -o StrictHostKeyChecking=no root@10.25.0.1
expect "*password:"
send "123456\r"
# expect "*#"
interact
以上脚本就ssh访问远程服务器10.25.0.1,只会自动输入密码123456。
收集日志文件
#!/usr/bin/expect
set timeout 20
spawn ssh -o StrictHostKeyChecking=no root@10.25.0.1
expect "*password:"
send "123456\r"
expect "*#"
send "cd /home/wintone/apache-tomcat-7.0.81/logs\r"
expect "*#"
send "tar jcvf localhost.2018-04-18.log.tar.bz2 localhost.2018-04-18.log\r"
expect "*#"
send "exit\r\r"
spawn scp root@10.25.0.1:/home/wintone/apache-tomcat-7.0.81/logs/localhost.2018-04-18.log.tar.bz2 .
expect "*password:"
send "123456\r"
interact
演示了登录服务器,cd到对应目录压缩文件,再退出当前服务器,再通过scp命令下载文件到本地。
这个脚本为了演示效果,真实情况下,可以把压缩文件这些服务器上的操作都合并到服务器上的一个命令脚本中。
更新代码重启服务器测试
#scp上传代码到服务器
#调用服务器脚本
#脚本大概内容:
# shutdown tomcat服务器
# ps aux|grep tomcat 判断tomcat进程是否已经关闭
# 如果无法关闭,最后尝试kill -9进程
# startup tomcat服务器
# ps aux|grep tomcat 判断tomcat进程是否出现
# netstat -an|grep 8080 判断端口是否正常监听了
# curl 服务其中一个服务看是否有正常报文返回。
#最后退出