1. 程式人生 > >ftp服務搭建腳本和客戶端ftp自動上傳腳本

ftp服務搭建腳本和客戶端ftp自動上傳腳本

被動模式 rgb fault virt otto shadow bak 安裝腳本 ssa

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自動上傳腳本