想用rsync同步两个服务器的日志,但是又不想弄密钥做验证 于是想到直接用shell自动输入账号密码来连接另一台服务器
脚本第一行#!/usr/bin/expect
表示使用expect进行处理
脚本本身需要赋予执行权限才可以执行expect
chmod 777 expectTest.sh
然后才能通过./expectTest.sh执行
通过 expect "需要检测的控制台内容"
来决定控制台输出指定内容之后进行下一步处理
例:
spawn rsync -vazu root@localhost:/data/server_2/log/ /data/test/server_2
expect "*assword:*"
send "123123\n"
expect eof
expect是开了一个子进程,通过spawn来执行shell脚本,监测到脚本的返回结果,通过expect判断要进行的交互输入内容(send)
比如 spawn rsync -vazu root@xxx.xx.xx.xx.....
浪费了一个小时才发现,看来expect要用得6还需要认真学学