linux执行脚本超时断开,linux expect 自动交互 执行命令 超时 不完整 中断 解决方法...

使用 expec t自动交互执行命令时,默认超时timeout为30s

手动添加set timeout -1设置 超时时间为无穷大 就可以执行完命令了

通过expect执行scp,传输文件不完整

写了一个脚本来传输文件,类似于这样:

sendsystem(){

expect -c "

spawn scp $ORACLE_BASE/oradata/$ORACLE_SID/system01.dbf oracle@$S_IP:$ORACLE_BASE/oradata/standby/

expect {

yes/no { send \"yes\r\"; exp_continue }

*assword* { send \"oracle\r\" }

};

expect 100%

expect eof ;

"

}

sendsysaux(){

expect -c "

spawn scp $ORACLE_BASE/oradata/$ORACLE_SID/sysaux01.dbf oracle@$S_IP:$ORACLE_BASE/oradata/standby/

expect {

yes/no { send \"yes\r\"; exp_continue }

*assword* { send \"oracle\r\" }

};

expect 100%

expect eof ;

"

}

结果:

spawn scp /home/oracle/std_control01.ctl oracle@192.168.134.134:/oracle/oradata/standby/std_control01.ctl

oracle@192.168.134.134's password:

std_control01.ctl 100% 9520KB 9.3MB/s 00:00

spawn scp /oracle/oradata/orcl/system01.dbf oracle@192.168.134.134:/oracle/oradata/standby/

oracle@192.168.134.134's password:

system01.dbf 92% 646MB 33.9MB/s 00:01 ETA

spawn scp /oracle/oradata/orcl/sysaux01.dbf oracle@192.168.134.134:/oracle/oradata/standby/

oracle@192.168.134.134's password:

sysaux01.dbf 100% 600MB 31.6MB/s 00:19

spawn scp /oracle/oradata/orcl/temp01.dbf oracle@192.168.134.134:/oracle/oradata/standby/

oracle@192.168.134.134's password:

temp01.dbf 100% 200MB 66.7MB/s 00:03

spawn scp /oracle/oradata/orcl/undotbs01.dbf oracle@192.168.134.134:/oracle/oradata/standby/

oracle@192.168.134.134's password:

undotbs01.dbf 100% 200MB 40.0MB/s 00:05

system01.dbf没传完就不传了

又试了几次发现偶尔其他文件也会传不完就不传了

最后发现是因为expect默认timeout为30S

手动添加set timeout -1设置超时时间为无穷大,问题解决

sendsystem(){

expect -c "

set timeout -1

spawn scp $ORACLE_BASE/oradata/$ORACLE_SID/system01.dbf oracle@$S_IP:$ORACLE_BASE/oradata/standby/

expect {

yes/no { send \"yes\r\"; exp_continue }

*assword* { send \"oracle\r\" }

};

expect 100%

expect eof ;

"

}

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值