• ベストアンサー

gpgコマンドの使用法

暗号化コマンドgpgを用いてファイルを暗号化するスクリプトを作成しています。暗号化する際のパスフレーズはrootしか見ることの出来ないファイルに保存して echo ${パスフレーズ} | gpg --passphrase-fd 0 --batch -c ${暗号化対象ファイル} とすると、${暗号化対象ファイル}の末尾に.gpgという拡張子がついた暗号化済みファイルが作成されます。暗号化済みファイルのファイル名を予め指定したいのですが出来るでしょうか?man gpgを調べた結果では出力先の指定などはできない模様でした。

質問者が選んだベストアンサー

  • ベストアンサー
  • Lean
  • ベストアンサー率72% (435/603)
回答No.2

gpgの書式が下記の通りです。 gpg [--homedir name] [--options file] [options] command [args] リファレンス(manページ)の説明だと上記書式で-cはcommandで、-oはoptionsになります。 書式では、optionsはcommandより先に指定しないといけませんので、 >-cオプションより後に-oオプションを付けるとエラーになります は、command(-c)がoptions(-o)より先に指定されており書式に合わないのでエラー。 >-oオプションより後に-cオプションを付けると正常に処理されます は書式の通り、options(-o)がcommand(-c)より先に指定されているので正常に処理されるという事です。

since1983
質問者

お礼

とても遅くなってしまいましたが、わかりやすいご回答に感謝いたします。 どうもありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • mtfoggy
  • ベストアンサー率14% (37/255)
回答No.1

>man gpgを調べた結果では出力先の指定などはできない模様でした。 これのことですか? # man gpg   -o, --output file     Write output to file.

since1983
質問者

お礼

-oを試してもgpgコマンドがエラーを吐くので、こちらが期待する ものではないと思っていました。やっと原因が分かりました。 -cオプションより後に-oオプションを付けるとエラーになります -oオプションより後に-cオプションを付けると正常に処理されます ということでした。ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • GPG暗号化をシェルスクリプトで実行する方法

    いつもお世話になっております。 パスフレーズの入力しGPGコマンドでファイルの暗号化を自動化するシェルスクリプトの書き方について教えてもらえませんでしょうか。 あるファイルをgpgコマンドを使いパスフレーズを入力し暗号化したいのですが、 > gpg -c ORG_FILE パスフレーズ入力 パスフレーズ再入力 このパスフレーズを指定して実行する作業を自動化したいと思っています。 このGPG暗号化パスフレーズの入力、再入力をシェルスクリプトで実行するにはどのようなコマンドの書き方をすればよいかご教授願えませんでしょうか。 どうぞ宜しくお願い致します。

  • GnuPGで復号化した時、同じファイル名があったら上書きするには?

    お世話になります。 GnuPG(1.4.9)をインストールして、ファイルの復号化をしています。 下記のコマンドラインで復号化しています。 gpg --decrypt-file --passphrase "使用するパスフレーズ" "ファイル名" 復号した際に、既に同じファイル名が存在していた時、下記のようなメッセージが表示されます。 File `ファイル名' exists. Overwrite? (y/N) このメッセージを表示しないで上書きするようにできますでしょうか? すみませんがご教授、宜しくお願いします。

  • 複数人にSSHの秘密鍵と公開鍵を設定

    VPSを借りてまして、CentOS6.2です。 fooユーザとbarユーザとhogeユーザに、SSHの秘密鍵と公開鍵を設定するにはどうすれば可能(あるいはすべき)なのでしょうか? ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/Users/sorai/.ssh/id_rsa): // ファイル作成場所 Enter passphrase (empty for no passphrase): // パスフレーズを入力する Enter same passphrase again: // パスフレーズをもう一度入力する というのを、その人数分行わないとできないでしょうか?あるいはそうすべきでしょうか? 今、/root/.ssh/authorized_keysを /home/miya/.ssh/autauthorized_keysにコピーして、rootのとき成功した秘密鍵で、 miyaアカウントでSSHログインしようとしてもだめでした。 (ただ、パーミッションやユーザownerをどうすべきかわかりません) よろしくお願い申し上げます。

  • シェルスクリプト(if文)

    引数で指定されたファイルがあるばあい、ファイルの末尾5行を表示し、ない場合は「ファイルパス in not found」と表示されるシェルスクリプトを作成したい。 それで偽のときのの実行結果がうまくいきません。 どこを修正すればいいでしょうか? 回答の程宜しくお願い致します。 実行結果 [root@Manabe root]# . filefile /etc/pass tail: /etc/pass: そのようなファイルやディレクトリはありません ソース #!/bin/bash if [ -f$1 ];then tail -5 $1 else echo "$1 in not found" fi

  • コマンドプロンプトでのマクロ使用

    バッチファイルを作成しているんですが ディレクトリを指定する箇所が多いので、簡潔に cdコマンドで移動する処理をd1,d2のようにしてマクロにしたいと思うのですが思うようにいきません。 コマンドプロンプト上に手打ちならば動くのですが バッチファイル上に組み込むと動きません。 doskeyを用いて、以下のような使用を考えています。(一部のみ) doskey d1=cd C:\aaa doskey d2=cd C:\bbb echo ***起動 d1 start ***.exe d2 start ***.exe

  • Solaris10でのreadコマンドについて

    Solaris10を使用しています。 コマンドの実行結果をそのまま変数として使用するために 以下のスクリプトを実行したところ・・ -------------------- #!/bin/sh read a b c <<EOF `ls -l aaa.log` EOF echo $a echo $b echo $c -------------------- 「ls -l aaa.log」の結果は、-rw-r--r-- 1 root root 211 1月 13 11:58 aa.log となるので $a=-rw-r--r-- $b=1 $c=root という結果を期待していたのですが、「/tmp/sh*** cannot open!」とエラーとなってしまいます。***は任意の数字です。 /tmpには上記で cannot open! となった「sh***」よりひとつ若い番号のファイルが作成され、 中は「ls -l aaa.log」の結果が記載されていました。 CentOS5.2、Cygwinでは期待した結果が得られたのですが、SolarisではNGでした。 何かSolaris特有の問題でもあるのでしょうか?ご教示願います。

  • シェルスクリプトでのmysqlコマンド実行

    いつもお世話になっております。 MYSQLで、データベースの一覧を出力し それを上から順にテーブル作成をしたいと考えています。 source コマンドで、ファイルを読み込んで実行したいのですが、 2つ目のfor文に上手く変数を渡せません。 'source $var_ファイル_$i.sql'` ↑これに変数が上手く渡りません。 そのままの値になってしまいます。 どうにか渡す方法はないでしょうか。 #!bin/bash var=`hostname -a` for i in `mysql -u root -p -e 'show databases'` do for (( cnt = 0; cnt < 11; cnt++ )) do echo $var echo $i `mysql -u root -p $i -e 'source $var_ファイル_$i.sql'` 1>> $var_ファイル_$i.log 2>&1 echo "$cnt 回目の処理" done done exit 0

  • typeperfコマンドを使用したバッチについて

    とあるPCについて、CPU使用率とメモリ使用量を一定期間(例えば1時間、1日間など)監視するために、 typeperfコマンドを使った以下のようなバッチファイルを作成しました。 ----- 条件:  1. プロセス毎に監視したい  2 結果はcsv形式でファイルに出力したい  3. 監視開始後に起動したプロセスについても監視したい 対象OS:  Windows 7 バッチ記述内容: @ECHO OFF setlocal enabledelayedexpansion for /l %%i in (1,1,360) do ( set OUTDIR=C:\temp\ set YYYY=!DATE:~0,4! set MM=!DATE:~5,2! set DD=!DATE:~8,2! set HH=!TIME:~0,2! set MI=!TIME:~3,2! set SS=!TIME:~6,2! set FILENAME=!OUTDIR!log_!YYYY!!MM!!DD!!HH!!MI!!SS!.csv echo ファイル出力:!FILENAME! typeperf -sc 1 "\Processor(*)\%% Processor Time" "\Process(*)\Working Set" > !FILENAME! ping localhost -n 10 > nul ) pause 補足: 上記のバッチでは、typeperfコマンドは1回のみ実行し、 for文で10秒ごとに360回(=1時間)繰り返しています。 ちなみに、ゆくゆくは1日間程度監視したいと思っているので、 可能であれば1ファイルにまとめて出力したいです。 (上記の場合は、出力ファイル名を一意にするために「log_yyyymmddhhmmss.csv」にしていますが、 まとめられるのであれば何でもいいです) ----- 実行した結果、CSVは問題なく出力されるのですが、 出力されたCSVの末尾に「終了しています。お待ちください... コマンドは、正しく完了しました。」 というメッセージが付いてしまいます。 上記メッセージ以外の部分だけをファイルに出力することはできないのでしょうか? 一旦ファイルに出力してから、文字列置換するしかないのでしょうか? 何かいい方法があれば教えてください。

  • 部分文字列の取得バッチの作成について

    デスクトップ上の「ダウンロードA」フォルダ内に入った複数のPDFファイルの、 ファイル名の末尾9文字目から5文字分(XXXXX)を抜き出す処理をしたいと思っています。 @echo off set TEST=hogehoge_XXXXX.pdf echo %TEST:~-9,5% 上記の書き方ですと、 1つの指定したファイル名での処理となりますが、 フォルダ内にある全てのPDFファイル名を取得し、 この処理を実行できる方法はないでしょうか? フォルダ内のPDFファイルは都度、追加・削除されるので(ファイル名の末尾が「XXXXX.pdf」なのは共通です)、その変化に対応したバッチファイルを作成する方法を教えて頂きたいです。 質問内容に不足がありましたら申し訳ありません。 どなたかご教授願います。

  • ファイルの読み込み時について

    こんにちは。質問させてください。 あるファイルを読み込みその読み込んだ行に指定した文字列がふくまれていたら 別ファイルに書き込む処理を作成しています。 ------------------------------------- $count=0; $fd = fopen($file, "r"); //$file ベースとなるファイル if($fd){ while(!feof($fd)){ echo($count."\n"); <省略> if(指定した文字列発見){ 別ファイルに書き込む }   <省略> $count = $count + 1; } fclose($fd); } ------------------------------------- 念のため参照元ファイルの行を表示($countにて)させています。 ここで質問なんですが、 上記プログラムを実行すると$countが1703行までしか表示されません。 元データは10000行あります。 上記で10000行まで$countを表示できるはずなのですが・・・ 助けてください・・・ よろしくお願いいたします。

    • ベストアンサー
    • PHP