FTP下载Shell脚本编程

我心血来潮学起了Linux Shell脚本,大概看了一下鸟哥的教材个人感觉不错。刚好手头有个需求,大致是需要从FTP下载zip文件并解压。我之前写了个Python版本,正好用Shell脚本重写一遍练练手:)。

#!/bin/sh
# download file from ftp server.
# write by bobo

VERSION=1.0

if [ "$#" != "3" ]; then
    echo "Version $VERSION"
    echo "Usage:"
    echo "    ftp.sh username@ip password files"
    exit 1
fi

username=$(echo $1 | cut -d'@' -f 1)
if [ ! "$username" ]; then
    echo "username invalid" 
    exit 1
fi

ip=$(echo $1 | cut -d'@' -f 2)
if [ ! "$ip" ]; then
    echo "ip invalid" 
    exit 1
fi

password=$2
file=$3

#echo $username,$ip,$password,$file

#ftp -inv $ip <<EOF
ftp -in $ip <<EOF
user $username $password
bin
get $file
bye
EOF

if [ -e "$file" ]; then
    echo "download success"

    dirname=$(echo $file | cut -d'.' -f 1)
    filetype=$(echo $file | cut -d'.' -f 2)

    # the file type is zip?
    if [ "$filetype" = "zip" ]; then
        mkdir -p $dirname
        unzip -o $file -d $dirname
    fi
fi 

示例:从ftp服务器192.168.14.1上下载14.zip并解压:

ftp.sh username@192.168.14.1 password 14.zip

记录一下心得:

  • ftp命令参数-n表示登录时不进行用户密码验证,可以用user命令输入用户和密码,方便脚本编写。
  • <<EOF表示键盘输入到EOF为止,这样脚本中只要每行输入FTP命令,最后以EOF结束就行了。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注