前提・実現したいこと
timeoutコマンド発動時でも、コマンドの実行結果を出力する方法を知りたいです。
(今回行いたいのは、ftpコマンドです。)
●今回実行したいコマンド
timeout 10s ftp -v -n < test.bat > ftpResult.txt
該当のソースコード
sh
1#!/bin/bash - 2 3# ファイルの説明 4# test.bat ←FTPをバッチモードで行うためのファイル 5# ftpResult.txt ←FTPコマンドの結果を書き込むファイル 6 7# test.batファイルを作成する。FTP転送のためのコマンド文字列を入力する。 8cat <<EOF > test.bat 9open 192.168.101.102 10username 11password123 12lcd /home/localuser/ 13cd /home/remoteuser/ 14put hoge.file 15bye 16EOF 17 18# タイムアウト設定し、batファイルモードでFTP実行する。 19# 結果はftpResult.txtへリダイレクトする 20ftp_cmd_exec=`timeout 10s ftp -v -n < test.bat > ftpResult.txt
●↓timeoutコマンドが発動する前にFTPが正常終了した場合
ftpResult.txtには下記のようにftpコマンドの結果が現れます。
console
1$ cat ftpResult.txt 2Connected to 192.168.101.102 (192.168.101.102). 3220 (vsFTPd 3.0.3) 4331 Please specify the password. 5230 Login successful. 6Local directory now /home/localuser/ 7250 Directory successfully changed. 8local: hoge.file remote: hoge.file 9227 Entering Passive Mode (192,168,101,102,214,124). 10150 Ok to send data. 11226 Transfer complete. 1217 bytes sent in 4.2e-05 secs (404.76 Kbytes/sec) 13221 Goodbye.
●↓FTP接続に時間がかかるなどの理由でtimeoutコマンドが発動した場合
ftpResult.txtになにも出力されません。
console
1$ cat ftpResult.txt 2$
timeoutが発動した場合でも、ftpResult.txtにはFTP実行結果を入力したいです。
FTPで問題が起きた際に、このftpResult.txtから解析する必要があるため、
なんとかして、timeoutコマンド発動時でも結果を出力したいです。
よい方法をご存知のかた、ご教示いただけませんでしょうか?
どうぞよろしくおねがいします。
補足情報(FW/ツールのバージョンなど)
Linux
CentOS
bash
回答3件
あなたの回答
tips
プレビュー