简介: 建立在tcl基础上的一个工具,它可以让一些需要交互的任务自动化地完成。expect等待输出中输出特定的字符,通常是一个提示符,然后发送特定的响应。
例如我们需要文件自动的异机备份,可用以下脚本配合定时任务来实现:
#/bin/sh
#... 省略若干shell脚本
/usr/local/bin/expect <<! #切换到expect
spawn scp -i /root/ssh密钥 /data/需要备份的文件 root@IP:/data/backup
expect {
"(yes/no)?" { #ssh第一次链接的时候会输出Are you sure you want to continue connecting (yes/no)?
send "yes\n"
expect "*passphrase*" {send "password\n"}
}
"*passphrase*" {
send "password\n"
}
}
expect {
"100%" {
send "exit\n"
}
}
expect eof # 退出expect
!
- spawn
spawn是进入expect环境后才可以执行的expect内部命令,它主要的功能是给ssh运行进程加个壳,用来传递交互指令。 - scp
scp 命令可以 在 linux 之间复制文件和目录。