lftp 戻りコード

lftp 戻りコード

リモートサーバーからリストを取得するために、次のコードを書きました。

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         

無効なディレクトリ名を渡しました。標準sftpはエラーコードを返します($? != 0)が、lftpは成功した(retval1 = 0)戻りコードを送信します。

上記のTempSessionLogFile成功した戻り値を含むエラーメッセージが表示されます。cd: Access failed: No such file (<<Directory Path>>)

lftpから戻りコードでエラーをキャッチする方法はありますか?そうでなければ、私の選択は何ですか?

ベストアンサー1

FTPプロトコルを使用して微妙な操作を実行しない限り(ここではそうではありません)、簡単な方法は通常のコピーコマンドを使用することです。ディレクトリ用のFTPサーバー。あなたはそれを使用することができますLftpFS、これはヒューズ内部的には、lftpを使用するファイルシステムです。代替案は次のとおりです。カルフトププス。 FTPではなくSFTPの場合は、以下を使用してください。SSHFS

#!/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"

おすすめ記事