栏目导航: 首页 > 操作系统 > Linux > 内容

Linux 下 scp 传输文件脚本

www.hx99.net    时间: 2016-10-08    阅读: 次     整理: 华西安全网

 
来源: http://www.cnblogs.com/autopenguin/p/5918738.html

脚本执行效果:
(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\r\"; exp_continue;}
    \"*assword\" {set timeout 300; send \"123abc\r\";}
  }
  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 调用带通配符的命令。
 
完整例子
#!/bin/sh
expect -c "
  spawn bash -c \"scp -P 2222 /opt/log-files/* upuser@109.129.125.32:/opt/log\"
  expect {
    \"yes/no\" {send \"yes\r\"; exp_continue;}
    \"*assword\" {set timeout 300; send \"ABC123\r\";}
  }
  expect eof"
 

 

本文来源:华西安全网[http://www.hx99.net]
发表评论】【告诉QQ好友】【错误报告】【加入收藏】【关闭