这个功能实现的是linux上传文件到linux,这个和一般的上传不同。一般上传是固定目录的批量上传或者上传单个文件,该脚本实现的是不同目录下的不同文件上传到不同目录下。这也是工作中实际遇到的问题。
配置文件test.conf:
#源文件路径,原文件名,目标路径,目标文件名
/root/test11,wen.txt,/root/test21,wen.txt
/root/test12,wen.txt,/root/test22,wen.txt
/root/test13,wen.txt,/root/test23,wen.txt
shell脚本:
#!/bin/bash
#获取配置文件按行赋给arr数组
i=0
while read line
do
arr[${i}]=${line}
(( ++i ))
done < /root/test.conf
for data in ${arr[@]}
do
IFS=',' arrEle=($data)
#ftp上传文件
ftp -n<<EOF
open 192.168.168.128
user root root123
binary
lcd ${arrEle[0]}
mkdir ${arrEle[2]}
cd ${arrEle[2]}
put ${arrEle[1]} ${arrEle[3]}
close
bye
EOF
done
这是第一次搭建linux环境,第一次写shell脚本,感谢同事兰清,网友小叶。这个功能还有我认为还有不足,对于配置文件中的每条记录都要进行一次ftp连接。ftp连接我认为和数据库连接一样也是相当耗费资源的,可以连接一次,然后循环逐个读取配置文件,按照配置文件指定的目录和地址进行上传;但是ftp命令好像不支持循环命令(如果真是如此,我目前会认为这个设计相当不合理)。还有一点犯了个错误就是当初在ftp成功之后读取配置文件,如果看这样可以的话,就少了一次循环,但这样还是不可以;因为ftp成功之后,我们所作的操作应该都是操作的服务器。
欢迎各位指正!谢谢大家