Linux 下 scp 传输文件脚本

脚本执行效果:
(1).远程传输本地 /ora_exp/dmp/CWDB_RAMS_* 文件至 11.4.24.21 的 /ora_exp/dmp 目录下。
 
脚本编写步骤:
假设 oracle 用户于 11.4.24.21 上的密码为 123abc,传输本地 /ora_exp/dmp/CWDB_RAMS_* 文件至 11.4.24.21 的 /ora_exp/dmp 目录下。
则传输脚本类似如下。
#!/bin/sh
expect -c "
  spawn bash -c "scp /ora_exp/dmp/CWDB_RAMS_*  oracle@11.4.24.21:/ora_exp/dmp"
  expect {
    "yes/no" {send "yes "; exp_continue;}
    "*assword" {set timeout 300; send "123abc ";}
  }
  expect eof"
注意:yes/no 判断后必须加入 exp_continue,这样才能保证 yes/no 判断后还能执行 *assword 的判断。
注意:scp 传输文件中经常使用了通配符,而如果直接使用 spawn 传递带通配符的命令 scp /ora_exp/dmp/CWDB_RAMS_*  oracle@11.4.24.21:/ora_exp/dmp 将无法执行。因此,需在 spawn 内套用 bash -c 调用带通配符的命令。
原文地址:https://www.cnblogs.com/autopenguin/p/5918738.html