LFTP-Rückgabecode

LFTP-Rückgabecode

Ich habe den folgenden Code geschrieben, um eine Liste von einem Remote-Server zu erhalten.

echo "set xfer:log yes" > batchfile.txt
echo "set xfer:log-file Templogfile1.txt">> batchfile.txt
echo "open -p $rport -u $ruser,$rpass sftp://$ripaddress">> batchfile.txt
echo "cache flush">> batchfile.txt
echo "cd $rrdir">> batchfile.txt
echo "pwd">> batchfile.txt
echo "ls -l $srfile">> batchfile.txt
echo "quit">> batchfile.txt

exec 3>&1 4>&2                 
exec > TempSessionLog.txt 2>&1 
set -x                         
( 
  lftp -f batchfile.txt >TempLogFile.log <<- EndFTP 
  EndFTP
)  
retval1="$?" 
exec 1>&3 2>&4   
set +x         

Ich habe einen falschen Verzeichnisnamen übergeben. Ein Standard-SFTP gibt einen Fehlercode zurück, ($? != 0)aber LFTP sendet einen Erfolgsrückgabecode (retval1 = 0).

Oben TempSessionLogFilesehe ich die Fehlermeldung cd: Access failed: No such file (<<Directory Path>>)mit einem erfolgreichen Rückgabewert.

Gibt es eine Möglichkeit, die Fehler in LFTP anhand der Rückgabecodes zu erfassen? Wenn nicht, welche Alternativen habe ich?

Antwort1

Solange Sie nichts Subtiles mit dem FTP-Protokoll machen, was hier nicht der Fall ist, ist der einfache Weg, normale Kopierbefehle zu verwenden, undmontierenvom FTP-Server in ein Verzeichnis. Sie könnenLftpFS, die einSICHERUNGDateisystem, das im Hintergrund LFTP verwendet. Alternativen sindCurlFtpFS. Für SFTP statt FTP verwenden SieSSHFS.

#!/bin/sh
trap 'fusermount -u mnt; rmdir mnt' EXIT INT TERM HUP
set -e
mkdir mnt
sshpass -p"$rpass" sshfs "$ruser@$ripaddress:/" mnt
cd "mnt/$rrdir"
ls -l "$srfile"

verwandte Informationen