使用expect实现异机备份

简介: 建立在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 之间复制文件和目录。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容