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支持目录(文件夹)浏览