2017-09-06 8 views
0

私はftpを行っています。ステータスを確認したいと思います。私は '$?'を使いたくない内部的にftpが通過しなくても、ほとんどの場合、ftpに対して0(成功)を返します。変数を使用したFTPステータスチェック - Linux

私はログファイルを確認し、そこから "転送完了"(221ステータス)のgrepを実行できます。それはうまく動作しますが、私はftpをやっている多くの異なったレポートがあるので、私はそれをしたくありません。だから、すべてのログファイルを複数作成することは、私が避けたいものです。

ローカルのスクリプト変数にログされた情報を取得し、それをスクリプト自体の中で処理できますか?これらに類似 何かが(私は両方のを試していないどちらも働いてきた):

ftp -inv ${HOST} > log_file.log <<! 
user ${USER} ${PASS} 
bin 
cd "${TARGET}" 
put ${FEEDFILE} 
bye 
! 
:以下

+1

あなたは「動作しませんでした」と言います。彼らはどのように働かなかったのか説明しません。出力はログファイルに書き込まれませんでしたか?出力はまったく書き込まれていませんでしたか?標準出力の代わりに標準エラーに書き込まれましたか? –

+0

変数を作成し、それをftpコマンドと同じにするとします。何も返されていません。変数はまだ空です。このようなものは 'STATUS =' ftp -n $ HOST> log_file.log <<!ユーザー$ USER パス$パス cd/user/sba-appl/test bye ここでEOFは空です。STATUSは空です。変数にログファイルに記録されているものを取得させたい。不適切なコード構造をごめんね。 –

答えて

0

stdoutを変数に取り込むには、OUTPUT=`cmd`またはOUTPUT=$(cmd)のいずれかのbashのcommand substitutionを使用できます。

ここで、あなたのケースでftpからの出力をキャプチャする方法の例です:

CMDS="user ${USER} ${PASS} 
bin 
cd \"${TARGET}\" 
put \"${FEEDFILE}\" 
bye" 

OUTPUT=$(echo "${CMDS}" | ftp -inv ${HOST}) 
関連する問題