我必须传输名称由两个变量X,Y组成的文件,它们在ftp服务器的ABC目录下到我的本地unix目录XYZ。在传输文件后,我必须转到本地目录路径,我应该解压缩(输入文件是压缩文件)。我必须使用用户名和密码连接到FTP。将文件复制到本地服务器时,我也必须使用我的用户名和密码。
这是我目前的尝试。它会起作用吗?我该如何改进呢?
ftp -n hostname <<EOF
user username pwd
cd ABC
get ls *X*.tar | ls *Y*.tar username1@pwd1 : XYZ
EOF
bye
for next in `ls *.tar`
do
tar -zvxf $next
done
答案 0 :(得分:1)
我建议您查看ftp命令行ftp-tool和脚本的手册。
替代方法:使用wget将ftp文件下载到本地计算机,然后scp到目标计算机,我想对ssh使用公钥认证,scp不需要密码,那么它应该结束像这样简单。
wget --ftp-user=$USERNAME --ftp-password=$PASSWORD ftp://$HOSTNAME/ABC/$Y.tar
scp $Y.tar $SCPUSER@$SCPHOST/targetpath/$X.tar
答案 1 :(得分:1)
请尝试以下代码。希望这会对你有所帮助。
#! /bin/bash
cd local_path
USER='username'
PASSWD='password'
file_name='files'
for HOST in ftpserver
do
echo $HOST
ftp -n $HOST <<END_SCRIPT
quote USER $USER
quote PASS $PASSWD
bin
prompt
cd "remote_path"
lcd "local_path"
mget $file_name.gz*
quit
END_SCRIPT
done
#extract file
mkdir -p ../archive/$DATE
for HOST in ftpserver
do
gunzip $file_name.gz
done
答案 2 :(得分:-1)
您可以使用wget
将文件从FTP服务器下载到unix
系统
cd YOUR_DIRECTORY
wget --user=USERNAME --password='PASSWORD' HOST_NAME/REMOTE_PATH/FILE_NAME.EXTENSION