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
我正在尝试从 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