Command Line from Keychain on MacOSX
コマンドラインからキーチェインを使う方法
gistコマンドがアップデートされて、パスワードを設定ファイルに書く事になったのだけど、README から security
という コマンドラインインターフェースで keychain を扱う方法があることを初めて知ったので、それについて簡単に調べたのでまとめ。
security
コマンドラインインターフェースで扱う時は generic password を用いるようなので、そうすると使えるのは以下の3つ。
- add-generic-password
- delete-generic-password
- find-generic-password
修正用に modify とか change 等のインタフェースは無いようなので delete して add という形になる模様。
追加方法
キーチェインへの追加は以下のようにする。
追加の際のアカウント名 (-a) とサービス名 (-s) は必須。
$ security add-generic-password -s dummy -a d6rkaiz -p dummy_password
上のコマンドを実行するとキーチェインアクセスユーティリティで追加された事が確認出来る。
パスワード検索
キーチェインに追加したパスワードを検索するには追加した時に使ったサービス名で行える。
$ security find-generic-password -gs dummy
keychain: "/Users/d6rkaiz/Library/Keychains/login.keychain"
class: "genp"
attributes:
0x00000007 <blob>="dummy"
0x00000008 <blob>=<NULL>
"acct"<blob>="d6rkaiz"
(略)
"type"<uint32>=<NULL>
password: "dummy_password"
削除方法
削除する場合は以下のように行う。
$ security delete-generic-password -s dummy
keychain: "/Users/d6rkaiz/Library/Keychains/login.keychain"
class: "genp"
attributes:
0x00000007 <blob>="dummy"
0x00000008 <blob>=<NULL>
"acct"<blob>="d6rkaiz"
(略)
"svce"<blob>="dummy"
"type"<uint32>=<NULL>
password has been deleted.
使いかた
ここにも書かれているけど、以下のようにするとパスワードだけが取得出来るので、設定ファイルにパスワードを直接書く必要性が減ります。
$ security 2>&1 >/dev/null find-generic-password -gs dummy | ruby -e 'print $1 if STDIN.gets =~ /^password: \"(.*)\"$/'
ヘルプを見ると、security
には 他にも有用な使い方が出来そう。