ftp服务搭建脚本和客户端ftp自动上传脚本

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ftp服务搭建脚本和客户端ftp自动上传脚本相关的知识,希望对你有一定的参考价值。

linux服务器搭建ftp服务脚本(在centos6.5和centos7上测试通过)(该脚本没有进行判断,需要自行清理环境)(该脚本只允许上传不允许下载,不允许使用匿名用户和本地用户登录)

安装脚本

#!/bin/bash
source /etc/rc.d/init.d/functions
#安装vsftpd
rpm -q vsftpd
if [ $? -ne 0 ];then
yum install -y vsftpd
fi
#备份主配置文件
cp /etc/vsftpd/ftpusers{,.bak}
cp /etc/vsftpd/user_list{,.bak}
cp /etc/vsftpd/vsftpd.conf{,.bak}
#创建虚拟用户
read -p "input username(default tom) : "  USERNAME
USERNAME=${USERNAME:-tom}
read -p "input user password (default 123456):" PASSWORD
PASSWORD=${PASSWORD:-123456}
read -p "input ftp home (default /usr/+ $USERNAME):" FTPHOME
FTPHOME=${FTPHOME:-"/usr/$USERNAME"}
read -p "input virtual username (default test):" VNAME
VNAME=${VNAME:-test}
read -p "input virtual user passwd (default $VNAME):" VPASSWD
VPASSWD=${VPASSWD:-"$VNAME"}
echo $USERNAME $PASSWORD $FTPHOME $VNAME $VPASSWD
#read -p

#修改主配置文件
cat > /etc/vsftpd/vsftpd.conf << EOF
listen_port=21
write_enable=YES
local_umask=022
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
connect_from_port_20=NO
data_connection_timeout=1200
listen=YES
max_clients=10
setproctitle_enable=YES
anonymous_enable=NO
local_enable=YES
anon_upload_enable=NO
anon_mkdir_write_enable=NO
chroot_local_user=YES
dirmessage_enable=YES
ftpd_banner=Welcome to blah FTP service.
guest_enable=YES
pam_service_name=/etc/pam.d/vsftpd.virtual
guest_username=$USERNAME
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/vhome
userlist_enable=YES
userlist_deny=YES
tcp_wrappers=YES
#被动模式,默认为yes
pasv_enable=YES
#pasv_min_port=1024
#pasv_max_port=2048
download_enable=NO
EOF

#创建宿主用户
useradd -d $FTPHOME -s /sbin/nologin $USERNAME
echo $PASSWORD|passwd --stdin $USERNAME
#创建虚拟用户宿主目录,用于虚拟用户登录访问
mkdir -pv $FTPHOME
chown -R $USERNAME.$USERNAME "$FTPHOME"
#创建虚拟用户
cat > /etc/vsftpd/vusers.txt << EOF
$VNAME
$VPASSWD
EOF
db_load -T -t hash -f /etc/vsftpd/vusers.txt /etc/vsftpd/vsftpd-virtual-user.db
#创建pam认证配置文件,指定数据库文件路径
cat > /etc/pam.d/vsftpd.virtual << EOF
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd-virtual-user
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd-virtual-user
EOF
#创建虚拟用户配置信息存放目录
mkdir -pv /etc/vsftpd/vhome
#在目录下对虚拟用户进行权限分配
cat > /etc/vsftpd/vhome/$VNAME <<EOF
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_umask=033
local_root=$FTPHOME
EOF
#重启vsftpd服务
service vsftpd restart


vsftpd.conf配置文件讲解

#监听端口
listen_port=21
#允许写入
write_enable=YES
#设置umask
local_umask=022
#启用日志
xferlog_enable=YES
#设置日志路径
xferlog_file=/var/log/vsftpd.log
#指定FTP使用20端口进行数据传输,默认值为YES。
connect_from_port_20=YES
#ftp数据连接超时,默认120s
data_connection_timeout=1200
#使用standalone模式运行
listen=YES
#最大连接数,默认0表示无限制
max_clients=10
#宿主ftp连接是否以不同的进程表现出来,默认为no
setproctitle_enable=YES
#匿名用户登录,设置为no
anonymous_enable=NO
#本地用户登录,设置为no
local_enable=NO
#匿名用户上传,设置为no
anon_upload_enable=NO
#匿名用户有创建目录的权限。设置为no
anon_mkdir_write_enable=NO
#是否运行用户切换到上级目录,默认为NO,yes时所有用户均不能切换到其他目录(牢笼模式)
chroot_local_user=YES
#设置欢迎语
dirmessage_enable=YES
ftpd_banner=Welcome to blah FTP service.
#启用虚拟用户
guest_enable=YES
#虚拟用户pam使用的名称
pam_service_name=/etc/pam.d/vsftpd.virtual
#使用的宿主用户名
guest_username=ftphost
#让虚拟用户有本地宿主用户的权限
virtual_use_local_privs=YES
#定义用户配置文件
user_config_dir=/etc/vsftpd/vhome
#是否启用userlist文件
userlist_enable=YES
#是否允许userlist中用户访问
userlist_deny=YES
#结合tcp wrapper进行主机访问控制
tcp_wrappers=YES
#是否启用被动模式
pasv_enable=YES
#被动模式端口范围,默认0表示任意
#pasv_min_port=1024
#pasv_max_port=2048
#禁止将文件下载本地
download_enable=NO

linux使用被动模式自动上传文件脚本

#!/bin/sh   
rpm -q ftp
if [ $? -ne 0 ];then
yum install -y ftp
fi
echo "start ftp update"
# -n: 不受.netrc文件的影响,<<  : 使用即时文件重定向输入
ftp -n<< EOF
open IP pord
user username password
passive
binary
cd DIR
lcd /LOCAL/DIR
prompt
mput *
close
bye
EOF

put命令讲解

open 建立指定ftp服务器连接,默认端口21
user 连接用户密码
passive 使用被动模式
binary 二进制传输模式(不会对文件就行任何修改)
cd 切换远程ftp命令
lcd 切换本地目录
prompt 关闭交互模式
mput 上传文件
close 断开ftp连接
bye 退出ftp


windows自动上传脚本(需要打开被动模式)

@Echo Off
::”设置path环境变量”
set path=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\
::”切换到执行目录”
c:
cd C:\Users\Administrator\Desktop\test
::”将执行的选项写入到文件,然后调用”
Echo open IP PORT >ftp.up
Echo username>>ftp.up
Echo password>>ftp.up
Echo binary>>ftp.up
Echo Cd DIR >>ftp.up
Echo lcd C:\Users\Administrator\Desktop\test\DIR>>ftp.up
Echo prompt>>ftp.up
Echo mput *>>ftp.up
Echo close>>ftp.up
Echo bye>>ftp.up
::”执行ftp命令,调用配置”
FTP -s:ftp.up
::”删除产生的配置文件”
del ftp.up /q

简单的讲解一下

open 连接ftp,后面接的是ftp服务器用户、断开

username ftp连接用户名

password ftp连接密码

binary 使用二进制传输模式

cd 切换远程ftp目录

lcd 切换本地暴露

prompt 关闭交互模式


windows打开ftp被动模式

打开IE浏览器-->工具-->internet 选项-->高级-->浏览-->勾选“使用被动ftp”

技术分享图片

技术分享图片


参考:

vsftpd参考文档:http://blog.51cto.com/yuanbin/108262

ftp命令详解:http://blog.csdn.net/zzzzcs/article/details/23995833

以上是关于ftp服务搭建脚本和客户端ftp自动上传脚本的主要内容,如果未能解决你的问题,请参考以下文章

Linux使用Shell脚本实现ftp的自动上传下载

FTP实时更新上传脚本

Debian下自动备份文件并上传到远程FTP服务器且删除指定日期前的备份Shell脚本

上传数据脚本

CentOS 6.9使用Shell脚本实现FTP自动上传和下载文件

python FTP自动下载,自动上传脚本,可以递归目录操作