首页 > 技术文章 > expect使用小结

taiyang-li 2016-10-24 15:28 原文

  因为工作关系,需要经常从线上机器上拉取数据,于是想着能否写个脚本,自动完成这个任务呢? 我一般使用scp在机器间传输文件,然而每次scp都需要输入密码,自动化脚本怎么解决这个问题呢?于是expect这款好用的交互工具就登场了。

  安装:

    rhel6.6下  yum install -y expect 

  使用:

expect {
  "(yes/no)" { send "yes\r"; exp_continue }
  "password:" { send "your-password\r" }
}
expect eof
exit

  注意事项:

    在使用expect的过程中,中了很多坑,下面一一列举:

    • expect后面的大括号不得另起一行,否则expect解释器不识别
    • 如果是第一次scp某台机器,需要针对(yes/no)进行处理,否则脚本将一直hang组(一直在等待password)
    • 在输入完密码之后,需要执行expect eof; exit退出,否则脚本将一直hang住

推荐阅读