您的位置:首页 > 运维架构 > Shell

老男孩教育每日一题-第95天-shell脚本知识点:书写脚本完成ftp上传下载

2017-07-19 14:45 465 查看
题目日常工作中经常用到FTP,进行文件的共享与下载,单对于有些不熟悉FTP命令行人员
使用FTP进行共享文件管理,是一件很头疼的事。
而且FTP如果有些文件需要每天定时进行上传或下载,人为重复相同工作也是没有意义的
因此如何编写自动下载或上传FTP文件脚本?

答案参考:

1. ftpput.sh 上传文件到ftp脚本

#!/bin/sh
#FileName:ftpput.sh
#Function:从本地客户端向ftp服务器上传一个文件
#Version:V0.1
#Author:
#Date:
# $#表示传递给此Shell脚本的参数个数
# -ne表示不等于
if [ $# -ne 2  ]
then
echo "Usage $0  <local_dir/filename> <remote_dir>"
exit 1
fi
说明:如果传递的参数个数不等于2个,即提示传参报错信息

# IP表示ftp的服务器ip地址
IP=127.0.0.1
#IP=192.168.6.1

# FULLNAME获取本地文件全路径名
FULLNAME=$1

# DESTDIR获取需要上传的ftp远程目录路径
DESTDIR=$2

# basename返回一个路径中的文件名部分
# 如FULLNAME="/home/Sunrier/Proj/log/test.log";
# 当local_filename=`basename $FULLNAME`
# 最终local_filename="test.log"
local_filename=`basename $FULLNAME`

# DESTFILE表示ftp服务器的路径,以及保存后的文件名
DESTFILE=$DESTDIR/$local_filename

# 自动上传文件到ftp服务器,免交互方式
ftp -i -n <<FTPIT
open $IP
user Sunrier redhat
bin
passive
cd /home/remote/log/ftpfile
put $FULLNAME $DESTFILE
quit
FTPIT
exit 0

2. ftpget.sh 下载文件到ftp客户端脚本

#FileName:ftpget.sh
#Function:从ftp服务器上下载一个文件到本地计算机上
#Version:V0.1
#Author:
#Date:

# $#表示传递给此Shell脚本的参数个数
# -ne表示不等于
if [ $# -ne 2  ]
then
echo "Usage $0  <remote_dir/filename> <local_dir>"
exit 1
fi

# IP表示ftp的服务器ip地址
IP=127.0.0.1
#IP=192.168.6.1

# FULLNAME获取从ftp服务器上下载的文件全路径名
FULLNAME=$1

# DESTDIR获取从ftp服务器上下载的文件所存放的本地计算机的目录路径
DESTDIR=$2

# remote_filename获取从ftp服务器上下载的文件名
remote_filename=`basename $FULLNAME`

# DESTFILE表示下载文件所存放的本地路径,以及本地保存后的文件名
DESTFILE=$DESTDIR/$remote_filename

ftp -i -n <<FTPIT
open $IP
user Sunrier redhat
bin
cd /home/remote/log/ftpfile
get $FULLNAME $DESTFILE
quit
FTPIT
exit 0

备注

今天是每日一题陪伴大家的第95天期待你的进步。对于题目和答案的任何疑问,请在博客评论区留言
往期题目索引http://lidao.blog.51cto.com/3388056/1914205
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ftp 脚本
相关文章推荐