lftp 使用输入文件进行命令输入不起作用

lftp using input file for command input not working

我正在尝试从 kermit 转换为 lftp。旧脚本从另一个脚本获取文件的 to/from 位置的命令。我仍想获取该输入文件,但我无法让它从输入文件中读取命令。

使用 kermit 的旧 utils 脚本:

/appl/bin/kermit $M_SCRIPT_TMP_FILE | sed -e '/^$/d' -e 's/^/         /' >> ${LOGFILE:-/home/mcleary/k_test/michele/logs/default.log} 2>&1

其中 kermit 版本 $M_SCRIPT_TMP_FILE 包含每个脚本执行 ftp 的内容(lcd 行向下):

ftp open MMMMSITE /USER:useruser /PASSWORD:pwpw
LOG TRANSACTIONS /app/tmp/m_Ftp_trans.tmp
  lcd /home/mcleary/k_test/michele/
  cd trans/
  ascii
  put test3.txt
  exit

使用输入文件的 lftp 脚本如下所示:

 /usr/bin/lftp -f $M_SCRIPT_TMP_FILE | sed -e '/^$/d' -e 's/^/         /' >> ${LOGFILE:-/home/mcleary/k_test/michele/logs/default.log} 2>&1

对于 lftp 版本,输入文件如下所示:

open ftp://useruser:pwpw://MMMMSITE
LOG TRANSACTIONS /app/tmp/m_Ftp_trans.tmp
  lcd /home/mcleary/k_test/michele/
  pwd
  cd trans/
  ls
  put test4.txt
  bye

lftp 的 output/error 消息是:

open: ftp: Name or service not known
cd: Not connected
ls: Not connected
put: Not connected
Exit Status - m_Ftp2: 0
m_cmd from ckcmd: m_exit
m_log_only from ckcmd:

知道为什么 lftp 无法识别 ftp 输入行吗?

更新:我知道 lftp 像这样从命令行工作,但我需要提供输入文件:

lftp -u  useruser,pwpw ftp://MMMMCO <<EOF
> lcd /home/mcleary/k_test/michele/
> cd transfer
> put test.txt
> bye
> EOF

更新 2:我尝试使用 lftp 的新实用程序脚本,如下所示:

open -u useruser,pwpw ftp://MMMMSITE

这是输出消息:

cd: Login failed: 530 User cannot log in.
ls: Login failed: 530 User cannot log in.
put: Login failed: 530 User cannot log in.
Exit Status - m_Ftp2: 0
m_cmd from ckcmd: m_exit
m_log_only from ckcmd:

我成功了。

filename.txt:

open ftp://MMMMSITE -u useruser,'pwpw'
  lcd /home/mcleary/k_test/michele/
  pwd
  cd trans/
  ls
  put test5.txt
  bye

然后使用该文件:

lftp -f filename.txt