- ベストアンサー
FTPでのログの差分を取得する方法について
- 約100Mバイトのログファイルの差分を取得するために、FTPを使用してサーバーからログを取得する方法について質問があります。
- バッチファイルとteratermマクロを使用して、ログの差分を取得することを試みましたが、取得できる差分の量がログ全体の約1/3程度しかなく、正常に取得できていない状況です。
- 対処として、teratermマクロの内容を変更する方法を2つ試しましたが、なぜこの変更が効果をもたらすのか理解できていません。アドバイスをいただきたいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
待ちが無い、ということは、キーの先行入力が行われている、ということになります。 先行入力されたコマンドが実際に実行されるのは、シェルの入力待ちになってからですが、TeraTermのマクロの実行は、明示しない限り先に進みます。 sendlnで送信されるのは一瞬です。 sendln 'sdiff logl log2 > kekka' → sdiffの実行が始まる sendln 'mv kekka kekka1' → その間にキーの先行入力が行われる(一瞬) sendln 'perl -pe "s/\n\r\n/"kekka1 > kekka' → その間にキーの先行入力が行われる(一瞬) wait'$' → perlの終了待ちのつもりかもしれないが、実は、sdiffやmvの終了待ちになってしまっている sendln 'rm kekka' → これが実行されているつもりが、実際は、前のコマンドが順番に実行されている途中。先行入力に溜るだけ sendln 'rm kekka1' → これが実行されているつもりが、実際は、前のコマンドが順番に実行されている途中。先行入力に溜るだけ Sendln 'logout' → これが実行されているつもりが、実際は、前のコマンドが順番に実行されている途中。先行入力に溜るだけ end → logout後にttpmacro.exeを終了しているつもりが、実際は、前のコマンドが順番に実行されている途中。 ↓ ttpmacroが終了したので、ftpの実行開始 → ttpmacroで実行すべきコマンドがまだ完了していないため、処理途中の状態のファイルをgetしている ということでは。 waitを入れることで、プロンプトが表示される=コマンドが終了するのを待って、次のコマンドを実行するので、確実に処理が終った状態で、ftpのgetに進めるのだと思います。 あれ? よく見ると、このマクロ、getしたいファイルまで消してしまってますよね。 ということは、rm kekkaを実行して、実際にアクセスできなくなるまでの微妙なタイミングでftpでget「できてしまっている」ようです。
その他の回答 (1)
- notnot
- ベストアンサー率47% (4900/10357)
> sendln 'rm kekka' せっかく作った差分ファイルを直後に消しているように見えますが。 他にも空白の欠けや意味不明のPerlコード(意味不明というかエラー)などもありますが、見ながら手打ちで投稿してタイプミスしたのですか? コピーペーストで投稿した方が良いですよ。 不正確な情報ではアドバイス不能です。
お礼
>> sendln 'rm kekka' >せっかく作った差分ファイルを直後に消しているように見えますが。 すみません。都合があり、手入力で質問したため、余分に入ってしまいました。 コピーペーストするようにしたいと思います。
補足
>> sendln 'rm kekka' >せっかく作った差分ファイルを直後に消しているように見えますが。 すみません。都合があり、手入力で質問したため、余分に入ってしまいました。 コピーペーストするようにしたいと思います。
お礼
ご教授ありがとうございました。 理解できました。 >あれ?>よく見ると、このマクロ、getしたいファイルまで消してしまってますよね。>ということは、rm kekkaを実行して、実際にアクセスできなくなるまでの微妙なタイミン>グでftpでget「できてしまっている」ようです。 すみません。都合があり、手入力で質問したため、余分に入ってしまいました。 実際は、rm kekkaはやっていません。