expect 是个不错的命令,能够完成一系列的自动化命令操做。对每次ssh登陆输入密码这么麻烦的时候使用深有体会。多数固定的命令执行,也能够经过expect来操做执行,很是的方便。nginx
以下例子,咱们经过expect来完成一系列的操做有读取实时日志bash
#!/usr/bin/expect spawn ssh troot@127.0.0.1 set timeout 30 expect "password" send "123456" send "\n" set timeout 5 expect “:~>” send "sudo su -" send "\n" expect "~ #" send "tail -200f /var/log/nginx/access.log" send "\n" interact
spawn是进入expect环境后才能够执行的expect内部命令,那么首先肯定环境安装了expect。ssh
expect个人理解有点相似if 的判断spa
send 是执行到某一步要输入的键位日志
interact 保证登陆不退出,没有的话执行完成即退出code
对于执行可能产生的延迟部分我用timeout来延迟执行命令自动化
#!/bin/bash /usr/bin/expect<<-EOF spawn xxxx set timeout 10 expect "password" interact expect eof EOF ps -ef |grep xxx