从kermit迁移到lftp时输入文件执行命令失败问题咨询
问题原因及解决方案
首次报错(open: ftp: Name or service not known)根因
你最初输入文件里的open命令格式错误:open ftp://useruser:pwpw://MMMMSITE 中密码和服务器地址之间多写了://,标准带认证的FTP URL格式为 ftp://[用户名]:[密码]@[服务器地址],错误的格式导致lftp把ftp识别为待解析的服务器域名,自然返回找不到服务的报错。
二次报错(530 User cannot log in)根因
你修改后的open -u useruser,pwpw ftp://MMMMSITE格式本身是正确的,报错原因出在两点:
- 你测试交互式命令时使用的服务器地址是
MMMMCO,但脚本里填写的是MMMMSITE,优先确认两处地址是否一致、有无拼写错误 - lftp没有kermit专属的
LOG TRANSACTIONS命令,该未知命令执行会干扰流程,需要替换为lftp对应的日志配置命令
最终修复方案
步骤1:输入文件内容修改为以下版本
# 替代原kermit的LOG TRANSACTIONS配置 set xfer:log yes set xfer:log-file /app/tmp/m_Ftp_trans.tmp # 两种open写法二选一即可 # 写法1:URL格式 open ftp://useruser:pwpw@MMMMSITE # 写法2:-u参数格式 # open -u useruser,pwpw MMMMSITE lcd /home/mcleary/k_test/michele/ pwd cd trans/ ls put test4.txt bye
步骤2(可选):排查登录问题
如果修改后仍提示530登录失败,可在输入文件第一行添加set debug 5开启调试日志,即可看到完整的FTP交互过程,快速定位是用户名密码错误、还是服务器端口/访问限制问题。
你原来的lftp调用脚本lftp -f $M_SCRIPT_TMP_FILE本身没有问题,无需修改。
内容的提问来源于stack exchange,提问作者Michele
相关产品推荐
相关产品推荐

