1Password CLI を peco と組み合わせて対話的に情報を取得する

結論

シェルスクリプトです。~/.zshrc などに書くとよいと思います。

function opget () {
  ITEM_ID=$(op item list | peco | cut -d " " -f 1)

  op item get $ITEM_ID
  op item get --format json $ITEM_ID
}

実行結果

1. item 一覧から希望の item を peco で選択する

$ opget を実行すると、まず item 一覧が表示されて peco で選択ができます。

gyazo.com

2. 選択した item の情報が生テキストと JSON で表示される

item を選択すると、その情報が生テキストと JSON で表示されます。

gyazo.com

補足

  • 秘匿情報が生でターミナルに流れるので、使用の際には十分な注意が必要です
  • item の情報は、生テキストのほうが人間にとっての可読性が高く、ただ、Secret Reference の値*1 は JSON でないと表示されないので、両方まとめて表示させています*2
  • item は Vault 単位で範囲を絞り込めますが、自分自身があまり Vault を積極的に分けておらず、また、peco を使っているんだから全ての対象からインクリメンタルサーチをしたほうが体験が良い*3ので、Vault は関係なく item 全てから絞り込んでいます
    • アカウントをまたぐことは現状できません

*1:op://vault-name/item-name/section-name/field-name

*2:したがって、使用の際には十分な注意が必要

*3:Vault を検索 -> item を検索 -> 情報表示 となって手間が増えると体験が悪い

Powered by はてなブログ