当前位置: 技术问答>linux和unix
请教shell问题
来源: 互联网 发布时间:2016-07-30
本文导语: 在一台FTP Server上,有多个目录(Dir1 Dir2 Dir3...DirN) 本地有一个配置文件,里面记录了目录名称,一行一个目录,如下: Dir1 Dir2 Dir3 ... DirN 我想用Shell去实现,先读取配置文件中的目录名,然后FTP到FTP Server上的相...
在一台FTP Server上,有多个目录(Dir1 Dir2 Dir3...DirN)
本地有一个配置文件,里面记录了目录名称,一行一个目录,如下:
Dir1
Dir2
Dir3
...
DirN
我想用Shell去实现,先读取配置文件中的目录名,然后FTP到FTP Server上的相应目录下取文件。
配置文件中不存在的目录,在FTP时不用操作
不知道是在每一个循环中都连接一次FTP,然后取文件(样需要建立N次FTP连接)?
还是FTP连接一次,循环取文件?
不知道任何下手,思路很零乱了。。。
请指点
本地有一个配置文件,里面记录了目录名称,一行一个目录,如下:
Dir1
Dir2
Dir3
...
DirN
我想用Shell去实现,先读取配置文件中的目录名,然后FTP到FTP Server上的相应目录下取文件。
配置文件中不存在的目录,在FTP时不用操作
不知道是在每一个循环中都连接一次FTP,然后取文件(样需要建立N次FTP连接)?
还是FTP连接一次,循环取文件?
不知道任何下手,思路很零乱了。。。
请指点
|
还真没试过ftp里循环取文件的,我试试去。
关注。。。
关注。。。
|
现在shell里循环 把所有的文件夹都找出来 比如 $dirName1 $dirName2 $dirName3
然后file="$dirName1/* $dirName2/* $dirName13/*"
然后ftp的时候 mget $file 应该可以把
然后file="$dirName1/* $dirName2/* $dirName13/*"
然后ftp的时候 mget $file 应该可以把
|
下面这个脚本我没有测试,不过应该是可以运行的!我以前写过一个关于ftp的脚本,就改了改。
前提是本地的目录名和ftp server上的目录名要一样。
for dir in "dir1" "dir2" "dir3" ... "dirn"
do
if [ -d "$dir" ]
then
echo "#!/bin/bash" >>autoftp
echo "open ftp server's IP" >>autoftp
echo "cd "$dir"" >>autoftp
echo "use username password" >>autoftp
echo "lcd "$dir"" >>autoftp
echo "binary" >>autoftp
echo "get *" >>autoftp
echo "bye" >>autoftp
cat ./autoftp|ftp -n > /dev/null
rm -f autoftp
else
echo "There is no this directory $dir in the local!"
fi
done
前提是本地的目录名和ftp server上的目录名要一样。
for dir in "dir1" "dir2" "dir3" ... "dirn"
do
if [ -d "$dir" ]
then
echo "#!/bin/bash" >>autoftp
echo "open ftp server's IP" >>autoftp
echo "cd "$dir"" >>autoftp
echo "use username password" >>autoftp
echo "lcd "$dir"" >>autoftp
echo "binary" >>autoftp
echo "get *" >>autoftp
echo "bye" >>autoftp
cat ./autoftp|ftp -n > /dev/null
rm -f autoftp
else
echo "There is no this directory $dir in the local!"
fi
done