将shell脚本嵌入expect脚本

需求需要将文件迁移至其他服务器上:

  1. 首先将文件利用tar进行压缩成gz格式,由于需要保持文件原有的属性权限则使用 tar -pczvf   # -p参数即保持文件原有属性
  2. 然后将文件进行scp远程传输,scp传输不会改变文件的原本属性   
  3. scp一个文件需要输入目标机器的密码,则利用expect自动操作输入密码
  4. 最后将文件进行解压,同时为了保证文件原本的属性则采用 tar -pxzvf   
#!/bin/bash
funcA(){
/usr/bin/expect<<EOF  #表示开始expect脚本
spawn scp /root/wy/testtarr/$i.gz  root@XXX.XXX.XXX:/root/wy/testtar/$i.gz
expect "*password:"
send "XXXXXXXX\r"
expect eof
EOF       #结束expect脚本
} 
 dir=`ls  /root/wy/test` #定义遍历的目录
 for i in $dir
 do
         tar -pczvf  /root/wy/testtarr/$i.gz  /root/wy/test/$i
	 funcA
         tar -pxzvf  /root/wy/testtar/$i.gz  /root/wy/testwork/$i
         echo $i
 done

备注:

  • expect代码块结尾必须使用interact/eof
  • send末尾必须加上\r
  • expect代码块需与shell脚本代码块分离

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值