Search code examples
lftpksh

lftp using input file for command input not working


I'm trying to convert from kermit to lftp. The old script takes the commands from another script for to/from location for the files. I want to still take that input file, but I'm having trouble getting it to read commands from the input file.

old utils script using kermit:

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

Where kermit version $M_SCRIPT_TMP_FILE contains contents from each script doing ftp (lcd line down) :

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

The lftp script using the input file looks like this:

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

For the lftp version, the input file looks like this:

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

The output/error message for lftp is:

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:

Any ideas why lftp isn't recognizing the ftp input line?

UPDATE: I know lftp works from command line like this, but I need to give input file:

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

UPDATE2: I tried new utils script using lftp like this:

open -u useruser,pwpw ftp://MMMMSITE

This is output message:

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:

Solution

  • I got it working.

    filename.txt:

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

    Then to use that file:

    lftp -f filename.txt