限定しりとり

DOSプロンプトにてgpgコマンドを実行した際のログ
を出力させようとしています。

リダイレクトを使用しても、ファイルに書き出されません。
(もちろん画面コピーしてから貼り付ければ可能ですが自動化したいです)

gpgコマンドが標準出力へ出力するログは、ファイルに書き出すことは
出来ないでしょうか?

/*****************************************
(例):GPGコマンドが出力するログ(保存したいログ)
*****************************************/
1. gpg暗号化 + 署名 成功時のログ
次のユーザーの秘密鍵のロックを解除するには
パスフレーズがいります:“test <gpg.test@test.co.jp>”
2048ビットRSA鍵, ID FFFFFF作成日付は2014-01-01 (主鍵ID 12345678)


2. gpg復号化 + 署名 検証成功時のログ
次のユーザーの秘密鍵のロックを解除するには
パスフレーズがいります:“test <gpg.test@test.co.jp>”
2048ビットRSA鍵, ID FFFFFF作成日付は2014-01-01 (主鍵ID 12345678)

gpg: 2048-ビットRSA鍵, ID 876543211, 日付2012-01-23に暗号化されました
“public.player <public@test.co.jp>”
gpg: 2014-01-01 02:01:11にRSA鍵ID 12345678で施された署名
gpg: “test <gpg.test@test.co.jp>”からの正しい署名

質問者からの補足コメント

  • お返事ありがとうございます。
    コマンドフォーマットで一点補足です。
    batファイル内でgpgコマンドを実行しているのですが、以下のような感じです。

    gpg --output %OUT% -se -u %user% --passphrase %pass% -r 公開鍵 %1 > log.txt

    あと、batファイル実行時にリダイレクトしても標準出力には出力されるのですが、
    log.txtには書き込まれません。
    xxx.bat > log.txt

    また、標準出力&エラー出力指定をした場合、暗号化/復号化失敗したログは
    書きだされるのですが、正常処理時や誰の鍵で暗号化した等のログは標準出力
    へ出力されたままで、log.txtには反映されません。

    下記gpgコマンドであれば、書き込まれるのですが...。
    gpg --list-key > pubkey_ring.txt

    No.1の回答に寄せられた補足コメントです。 補足日時:2015/02/02 18:34
  • すみません、もう一点補足です。

    Linuxのプロンプト(Ubuntu)で、shファイル内にgpgコマンドを実行して、
    リダイレクト(>>&)しますと、期待する出力がされています。

    今回はDOSプロンプトで実行したいです。

      補足日時:2015/02/02 19:32
  • お返事ありがとうございます。
    ご教授頂いた両方リダイレクトは、以前にも試した方法なのですが、
    再度やってみました!結果はやはりダメでした^^;

    なぜ出ないんでしょ...Wr5さんのPC環境ではgpgコマンドに対する
    リダイレクトに成功しますか?

    ちなみに私の環境は、『Windows7 64bit』となります。

    No.2の回答に寄せられた補足コメントです。 補足日時:2015/02/03 10:38
  • 下記に実行方法と結果を記載します。

    [batファイル(a.bat)]
    @echo OFF
    echo START
    rem gpg --output test.txt.gpg -se -u 署名者メアド --passphrase パスフレーズ -r 公開鍵 test.txt log.txt
    echo END

    [command]
    a.bat > log.txt 2>&1

    [標準出力]
    次のユーザーの秘密鍵のロックを解除するには
    パスフレーズがいります:“test <gpg.test@test.co.jp>”
    2048ビットRSA鍵, ID FFFFFF作成日付は2014-01-01 (主鍵ID 12345678)

    [log.txt]
    START
    END

    [暗号化処理]
    暗号化成功(test.txt.gpgが生成)

    ※ 標準出力をlog.txt内に格納したいです

    No.3の回答に寄せられた補足コメントです。 補足日時:2015/02/03 13:15
  • すみません、a.batの内容が間違っていました。
    下記が本物です。

    [batファイル(a.bat)]
    @echo OFF
    echo START
    gpg --output test.txt.gpg -se -u 署名者メアド --passphrase パスフレーズ -r 公開鍵 test.txt log.txt
    echo END

      補足日時:2015/02/03 13:30
  • ご確認ありがとうございます。
    やはりスタンダードな手法では標準出力を取得できないようですね...。
    Linux上でのシェル(>>& log.txt)では取れるので、DOSの問題なのでしょうか。

    実行環境をCygwinに変更してシェルで実行/取得するしかないですかね^^;
    ただそうなるとかなりの手間に...><。私も継続的に調査してるのですが見当たりません...。

    No.4の回答に寄せられた補足コメントです。 補足日時:2015/02/04 17:43

A 回答 (4件)

>なぜ出ないんでしょ...Wr5さんのPC環境ではgpgコマンドに対する


>リダイレクトに成功しますか?

失敗しますね……。
gpgのソースまでは確認していませんが…リダイレクトを強制的に外している…んでしょうかねぇ……

cmd.exeが妙な挙動をしている。という可能性もあるにはありますが…。

フロントエンド的なプログラム作って、stdoutとstderrをパイプで受け取れるようにしてみないと判らない…でしょうかね。
もっとも、その場合でも別々に出力されるのでコマンド プロンプトの画面に表示される状況とは異なってしまいますが。
CreateProcess()のlpStartupInfo.hStdOutputとlpStartupInfo.hStdErrorに同じハンドル渡せば一緒に取れる…か?
https://msdn.microsoft.com/en-us/library/windows …

パイプに変更してWindows版のteeコマンドで…でも失敗しますし…。
この回答への補足あり
    • good
    • 0

「ご教授頂いた両方リダイレクトは、以前にも試した方法なのですが、


再度やってみました!結果はやはりダメでした^^;」
というのは, 具体的には
・どのようにコマンドを入力して
・どうなった
ということでしょうか?
この回答への補足あり
    • good
    • 0

両方リダイレクトするように指定すればよいかと。



http://blog.kumacchi.com/2007/07/05/386
とか。
この回答への補足あり
    • good
    • 0

>gpgコマンドが標準出力へ出力するログは、ファイルに書き出すことは


>出来ないでしょうか?

標準出力ならリダイレクトでファイルに出力されるはずかと。
標準エラー出力だったりしませんか?

http://support.microsoft.com/kb/110930/ja
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!