本文目录导读:

- 基础FTP脚本(Windows批处理)
- Shell脚本(Linux/Mac)
- 使用lftp(更强大的工具,需要安装)
- Python脚本(跨平台)
- PowerShell脚本(Windows)
- 带日志和错误处理的增强版Shell脚本
- 使用建议
基础FTP脚本(Windows批处理)
@echo off REM FTP上传脚本 - Windows set FTP_HOST=ftp.example.com set FTP_USER=username set FTP_PASS=password set LOCAL_DIR=C:\local\folder\ set REMOTE_DIR=/remote/folder/ echo user %FTP_USER%> ftp_commands.txt echo %FTP_PASS%>> ftp_commands.txt echo cd %REMOTE_DIR%>> ftp_commands.txt echo binary>> ftp_commands.txt echo lcd %LOCAL_DIR%>> ftp_commands.txt echo mput *.*>> ftp_commands.txt echo quit>> ftp_commands.txt ftp -s:ftp_commands.txt %FTP_HOST% del ftp_commands.txt
Shell脚本(Linux/Mac)
#!/bin/bash # FTP下载脚本 HOST="ftp.example.com" USER="username" PASS="password" REMOTE_DIR="/remote/path/" LOCAL_DIR="/local/path/" FILE="important_file.txt" ftp -n $HOST << EOF quote USER $USER quote PASS $PASS lcd $LOCAL_DIR cd $REMOTE_DIR binary get $FILE quit EOF
使用lftp(更强大的工具,需要安装)
#!/bin/bash # 使用lftp的高级脚本 HOST="ftp.example.com" USER="username" PASS="password" lftp -u $USER,$PASS $HOST << EOF mirror --verbose --parallel=3 \ /remote/source/ /local/destination/ quit EOF
Python脚本(跨平台)
#!/usr/bin/env python3
# ftp_upload.py
from ftplib import FTP
import os
def upload_file(host, user, passwd, local_file, remote_dir):
with FTP(host) as ftp:
ftp.login(user, passwd)
ftp.cwd(remote_dir)
with open(local_file, 'rb') as f:
ftp.storbinary(f'STOR {os.path.basename(local_file)}', f)
def download_file(host, user, passwd, remote_file, local_dir):
with FTP(host) as ftp:
ftp.login(user, passwd)
local_path = os.path.join(local_dir, os.path.basename(remote_file))
with open(local_path, 'wb') as f:
ftp.retrbinary(f'RETR {remote_file}', f.write)
# 使用示例
upload_file('ftp.example.com', 'user', 'pass', 'test.txt', '/upload/')
download_file('ftp.example.com', 'user', 'pass', '/download/report.csv', './')
PowerShell脚本(Windows)
# FTP上传脚本 - PowerShell
$ftpServer = "ftp.example.com"
$ftpUser = "username"
$ftpPass = "password"
$localFile = "C:\files\data.txt"
$remoteFile = "/upload/data.txt"
$ftp = [System.Net.FtpWebRequest]::Create("ftp://$ftpServer$remoteFile")
$ftp.Credentials = New-Object System.Net.NetworkCredential($ftpUser, $ftpPass)
$ftp.Method = [System.Net.WebRequestMethods+Ftp]::UploadFile
$fileContent = [System.IO.File]::ReadAllBytes($localFile)
$ftp.ContentLength = $fileContent.Length
$requestStream = $ftp.GetRequestStream()
$requestStream.Write($fileContent, 0, $fileContent.Length)
$requestStream.Close()
$response = $ftp.GetResponse()
Write-Host "Upload completed: $($response.StatusDescription)"
带日志和错误处理的增强版Shell脚本
#!/bin/bash
# 带日志的FTP同步脚本
LOG_FILE="/var/log/ftp_sync.log"
HOST="ftp.example.com"
USER="username"
PASS="password"
REMOTE_DIR="/backups/"
LOCAL_DIR="/data/backups/"
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> $LOG_FILE
}
# 检查网络连接
if ! ping -c 1 $HOST &> /dev/null; then
log "ERROR: Cannot reach FTP server $HOST"
exit 1
fi
# 开始同步
log "Starting FTP sync from $LOCAL_DIR to $HOST:$REMOTE_DIR"
cd $LOCAL_DIR
ftp -n $HOST << EOF &>> $LOG_FILE
quote USER $USER
quote PASS $PASS
cd $REMOTE_DIR
binary
prompt off
mput *
quit
EOF
if [ $? -eq 0 ]; then
log "Sync completed successfully"
else
log "ERROR: Sync failed with exit code $?"
exit 1
fi
使用建议
-
安全性:避免在脚本中硬编码密码,可考虑使用:
- 环境变量
- 加密的配置文件
- .netrc文件
-
错误处理:生产环境脚本应包含完善的错误处理和日志记录
-
批量处理:使用
mget/mput或mirror命令处理多个文件 -
连接测试:先测试连接是否可用再开始传输
-
定时任务:结合cron(Linux)或任务计划程序(Windows)实现自动化
选择哪种脚本取决于你的操作系统环境、具体需求和可用的工具,Python脚本提供了最好的跨平台兼容性,而lftp则提供了最强大的功能集。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播