FTP账号密码批量校验不用一个一个试,7个工具从免费脚本到付费平台,按数量和数据量选就行
管着几十个网站空间,每个空间一个FTP账号,时间长了有的过期、有的改了密码、有的服务器都停了。想一次性把这些账号全部验证一遍,看哪些还能用、哪些已经废了——手动一个个登录再登出,半天就过去了。
问题不在于有没有工具能校验FTP,而是你要校验的量级不同、要获取的信息深度不同,用的工具也应该不一样。有的场景只需要知道"能不能连上",有的需要知道"上传下载速度多少",还有的要对文件做完整性校验。找对工具比硬着头皮用FileZilla一个个点高效得多。
七个工具的分工逻辑
· 10个以内 → FileZilla站点管理器批量连接就够了
· 10-100个 → Python脚本多线程跑,几分钟出结果
· 100个以上 → 专用批量校验软件或x-FtpClientTool
· 要测速度+完整性 → 脚本加测速+MD5校验逻辑
· 定期自动校验 → 宝塔计划任务+Python脚本定时跑
一、FTP校验到底在验什么
很多人觉得校验就是"连不连得上",其实这只是第一层。真正要把一批FTP空间管明白,至少看四个维度:
选工具之前先想清楚验到什么程度。只验连通性,一个Python脚本几十行就够了。要验速率和完整性,工具就得升级。

二、FileZilla站点管理器——10个以内最简单的方案
FileZilla自带的站点管理器可以把所有FTP账号保存进去。虽然没有"一键批量校验"按钮,但10个以内有变通方法:把所有FTP账号添加进站点管理器,用键盘方向键快速切换 → 回车连接 → 看是否成功 → 记下来。连不上的会弹错误提示,整个过程大概5-8分钟。
上限在哪:超过20个就不要用了。切换站点的操作疲劳感会指数级上升,没有结果汇总,纯靠手动记录,容易漏也容易错。
三、Python脚本——10到100个最灵活,零成本
Python自带的ftplib模块就能搞定FTP连接校验,不需要装任何第三方库。配合concurrent.futures做多线程并发,100个FTP账号几分钟跑完。
import ftplib, csvfrom concurrent.futures import ThreadPoolExecutor, as_completeddef check_ftp(host, port, user, pwd, timeout=10):result = {"host": host, "user": user, "status": "failed", "permission": "none", "reason": ""}try:ftp = ftplib.FTP()ftp.connect(host, int(port), timeout=timeout)ftp.login(user, pwd)ftp.nlst() # 测读权限try:# 测写权限ftp.storbinary("STOR _test.tmp", open("/dev/null", "rb"))ftp.delete("_test.tmp")result["permission"] = "read+write"except:result["permission"] = "read only"ftp.quit()result["status"] = "success"except Exception as e:result["reason"] = str(e)[:100]return result# 读取CSV (host,port,user,password)accounts = []with open("ftp_list.csv") as f:for row in csv.reader(f):if row and not row[0].startswith("#"):accounts.append(row)# 20线程并发校验results = []with ThreadPoolExecutor(max_workers=20) as executor:futures = {executor.submit(check_ftp, *a): a for a in accounts}for f in as_completed(futures):results.append(f.result())# 汇总输出success = [r for r in results if r["status"] == "success"]print(f"总计{len(results)}个, 可用{len(success)}个, 失败{len(results)-len(success)}个")for r in results:if r["status"] == "failed":print(f"✗ {r['host']} {r['user']}: {r['reason']}")核心逻辑就三步:连接 → 登录 → 读写权限测试。失败的详细原因记录在reason字段,跑完一目了然。想加测速的话,在写权限测试那里换一个固定大小的测试文件,记录传输时间就行。想做MD5校验,上传后下载对比哈希值。有编程基础的20分钟能改出来。
四、x-FtpClientTool——图形界面,适合不想写代码的
Java开发的FTP/SFTP客户端工具,开源免费,Gitee上直接clone。支持FTP/FTPS/SFTP三种协议,最大特点是可以在一个界面里管理多个FTP连接。
批量连接管理
一次性导入多个FTP配置,保存为连接列表,点击即连
批量文件操作
批量上传、下载、删除文件及文件夹
开源免费跨平台
有Java环境就能跑,Windows/Linux/Mac都行
状态直观
连接状态、传输进度、错误日志都在界面上显示
限制也很明显:它没有"一键校验100个FTP并出报告"的功能,需要逐个连接看状态自己记录。适合20-50个账号的场景,比FileZilla方便,但做不到全自动。

五、nmap FTP脚本——只查端口开放和匿名登录
如果有一批IP地址,想知道哪些开放了21端口、哪些允许匿名登录,nmap最快:
# 批量扫描21端口nmap -p 21 -iL ip_list.txt -oN ftp_port.txt# 检测匿名登录nmap -p 21 --script ftp-anon -iL ip_list.txt# 获取FTP服务版本nmap -p 21 --script ftp-banner -iL ip_list.txt
几百个IP扫21端口几十秒出结果,但它不能验账号密码,只能验端口开没开、能不能匿名登。场景不同:你是"一批账号不知道哪些还活着"→ nmap帮不上忙;你是"一批服务器不知道哪些开了FTP服务"→ nmap最合适。
六、宝塔计划任务——设好就不用管,每天自动校验
FTP空间都在自己服务器上且装了宝塔面板,可以做定期自动校验:把Python校验脚本放服务器上 → 宝塔面板 → 计划任务 → 添加Shell脚本任务 → 设置每天凌晨3点执行 → 结果写日志或发钉钉/企业微信 → 有FTP挂了,早上看消息就知道。
#!/bin/bashcd /www/ftp_checkpython3 ftp_check.py >> logs/check_$(date +%Y%m%d).log 2>&1fail_count=$(grep "failed" logs/check_$(date +%Y%m%d).log | wc -l)if [ $fail_count -gt 0 ]; thencurl "https://oapi.dingtalk.com/robot/send?access_token=xxx" \-H "Content-Type: application/json" \-d "{\"msgtype\":\"text\",\"text\":{\"content\":\"FTP告警: ${fail_count}个空间不可用\"}}"fi适合"FTP空间长期维护、需要持续监控"的场景。一次配好之后不用管了,有异常自动通知。
七、现成EXE工具和在线检测——开箱即用,但各有短板
关于现成EXE的提醒:大多来历不明,杀毒软件可能报毒,很多只支持老旧FTP协议不支持FTPS/SFTP。涉及敏感数据的FTP空间,不建议用不明来源的exe。
八、七个方案一张表选清楚
九、三个容易踩的坑
超时设太短误判大量"不可用"
FTP服务器在不同地区、不同线路下响应速度差别很大。超时时间设成3秒,海外服务器基本全挂。建议设10秒起步,海外服务器15-20秒。批量校验时宁可慢一点,也别把能用的判成不能用。
主动模式vs被动模式没搞清楚
有些FTP服务器只支持被动模式(PASV),用主动模式连会超时。Python的ftplib默认是被动模式,但如果用其他工具或自己写socket,要确认模式设置。连不上时先别急着判死刑,切换一下主动/被动模式试试。
并发数开太高被服务器封IP
一口气50个并发去连同一个FTP服务器,服务端的安全策略可能直接把你IP封了,后面的全部连不上。建议并发数控制在20以内,同一台服务器不要超过5个并发。如果FTP空间分布在多台服务器上,可以把同一台服务器的账号分组、串行执行。
十、按场景直接选
场景一:就3-5个FTP,偶尔看看能不能用
→ FileZilla站点管理器,零成本零学习,5分钟搞定
场景二:50个左右,需要知道每个的读写权限
→ Python脚本方案,复制上面的代码改CSV路径就能跑
场景三:不想写代码,有图形界面需求
→ x-FtpClientTool,开源免费,Java环境就能跑
场景四:几百台服务器,先摸底哪些开了FTP
→ nmap批量扫21端口,几十秒出结果,再对有端口的单独校验
场景五:FTP空间需要长期监控,不想天天手动查
→ 宝塔计划任务+Python脚本+钉钉通知,一次配置长期自动跑
场景六:完全不会技术,就要一个exe打开就能用
→ 找现成的FTP批量验证工具,但注意来源可靠性,涉及敏感数据慎用
场景七:临时测一两个,不想装任何东西
→ 在线FTP检测工具,打开网页输入信息就行
说穿了,FTP批量校验这个需求本身不复杂——就是"连接+登录+看结果"的重复。复杂的是不同量级、不同深度下工具选择不一样。10个以内FileZilla够用,50个写个Python脚本最划算,几百个还要长期监控就上计划任务+自动通知。工具是手段,知道什么时候用什么工具才是本事。
