Linux·shell远程传输文件
下载expect命令 sudo apt-get install expect spawn: 是开一个新的进程去执行后面的命令 expect:是获取spawn命令执行后的信息,看看是否和其事先指定的相匹配,如果匹配就会执行后面的内容。如果单独写expect不写spawn,就不会触发。 send: 发送指定的字符给系统。 exp_continue: 是让expect继续往下匹配。 eof: 关键字用于匹配结束符。 expect 中scp命令传输文件是单个执行的需要具体到文件名
#!/bin/bash/
hd=(86 19 91 71 13 51 36 70 31 30 17 11 34 75 74 81 87 89 79 88 10 83 90 76 84 85 97 18 38 59 50 ZZZZ )
# 打印数组的个数
echo "打印数组的个数" ${
#hd[@]}
# 获取上月的时间
NowTime=`date -d "1 month ago" +"%Y%m"`
# 指定传输文件的月份
# NowTime=202209
# 远程服务器密码
password=123456
echo "省份文件传输开始"
for ((i=0;i<${#hd[@]};i++))
do
# 文件名
hd_name_3=${hd[i]}settlement${NowTime}.zip
hd_name_8=${hd[i]}new_settlement${NowTime}.zip
echo 当前传输的文件名: ${hd_name}
# scp -p 远程端口 -r 本地路径 用户名@ip:/远程路径
# 远程传输
# 三个文件的传输
expect -c "
spawn scp -r /rxldc/${hd_name_3} acc@ip:/home/ldcc/
expect {
"*assword" {set timeout 300; send "${password}
"; exp_continue;}
"yes/no" {send "yes
";}
}
expect eof"
# 八个文件的传输
expect -c "
spawn scp -r /rxldc/${hd_name_8} acc@ip:/home/ldcc/
expect {
"*assword" {set timeout 300; send "${password}
"; exp_continue;}
"yes/no" {send "yes
";}
}
expect eof"
done
echo ===文件传输完成====
下一篇:
让Tomcat支持目录(文件夹)浏览
