linux远程执行命令有密码,Linux远程ssh设置expect自动填写密码验证-登陆同时执行命令-并下载文件...

我们需要远程登录服务器,登陆的同时呢执行find命令获取一个时间段内的文件名,并将他们通过rsync下载到本地。

因为要跳过已经下载好的目录,scp命令就不够用了,这里用了rsync。

因为这里find命令只是获取文件名方便后续下载而已,所以设置find的参数-maxdepth 1来设置扫描深度,防止遍历子文件夹。

同时为了防止根目录也输出,我们设置find /data/abc/*这里的*号就是能够防止输出根目录,毕竟我们只是需要/data/abc/下的文件名,而不是/data/的文件名,这是很大的区别。

需要apt/yum安装expect

#!/bin/bash

if expect -c "

spawn ssh finch@10.0.3.3 \"find /data/abc/* -maxdepth 1 -newermt '2020-09-04 13:00' -a -not -newermt '2020-09-07 23:59';\"

expect {

\"*assword\" {set timeout 300; send \"12345678\r\";}

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

}

log_file /home/finch/bcd.txt

expect eof"

then

sed -i '1d' /home/finch/bcd.txt

ABC=`cat /home/finch/bcd.txt`

for i in $ABC

do

echo "start get files: $i"

expect -c "

spawn rsync -avz --progress finch@10.0.3.3:$i /data/tmp/

expect {

\"*assword\" {set timeout 300; send \"12345678\r\";}

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

}

expect eof"

done

echo "start clear the cache file named bcd.txt"

:>./bcd.txt

fi

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值