Napoleon's Penguin Mascot
Introducing npm Teams! Private packages + team management tools.Learn more »

@neos21/npm

0.0.2 • Public • Published

NPM : Neo's Password Manager : @neos21/npm

NPM Version

ID やパスワードなどの情報を JSON ファイルに保存し、アカウント情報を管理できるコマンドです。

  • JSON ファイルはユーザホームディレクトリ直下に neos-password-manager-db.json というファイル名で生成します
  • パスワード情報は環境変数 NEOS_MASTER_PASS で設定したマスターパスワードを用いて暗号化して保存します
  • 参照時は環境変数 NEOS_MASTER_PASS で設定したマスターパスワードを用いて復号してコンソール出力します

Neo's Password Manager の略で @neos21/npm というパッケージ名にしましたが、コマンド名は np です。

インストール方法

インストールするには Node.js・npm 環境が必要です。

# npm でグローバルインストールします 
$ npm install --global @neos21/npm
 
# パスワードを暗号化・復号するためのマスターパスワードを設定します 
export NEOS_MASTER_PASS=my_master_password
 
# np コマンドが使用できるようになります (サブコマンド未指定の場合、ヘルプが表示されます) 
$ np
 
# 明示的にヘルプを表示します 
$ np --help
 
# バージョン情報を確認できます 
$ np --version
  • 環境変数 NEOS_MASTER_PASS を設定しないとコマンド自体が動作しないので注意

使い方

np add : アカウント情報の追加 or 削除

# ロングオプション 
$ np add twitter --id my_user --pass my_password --mail me@example.com --url 'https://twitter.com/my_user' --text 備考
 
# エイリアス・同サービスに別アカウントの情報を登録 
$ np a twitter --id second_user --pass my_password
 
# ショートオプション 
$ np add instagram -i 'my_user' -p 'my_password' -m 'me@example.com' -u 'https://instagram.com/my_user' -t '備考'
 
# このコマンドのヘルプを表示します 
$ np add --help

np add 以降に、項目別に以下の情報を指定して保存できます。

  • サービス名 : アカウント情報の登録先サービス名。この項目は必須です
  • --id-i : ID (ユーザ ID など)。この項目は必須です
  • --pass-p : パスワード。この項目は暗号化して保存されます
  • --mail-m : E-mail。アカウント登録に用いたメールアドレスなどを保存できます
  • --url-u : URL。登録したサイトの URL などを保存できます
  • --text-t : 備考。任意のテキストを残せます

初回のコマンド実行時など、ユーザホームディレクトリ配下に JSON ファイルが存在しない場合は自動作成します。

サービス名と ID、もしくは、サービス名と E-mail が合致するデータが既に存在する場合、そのデータに他の項目の情報を上書き保存します。

上述のコマンドを実行すると、ユーザホームディレクトリ直下の JSON ファイルに以下のように情報が記録されます。

{
  "twitter": [
    {
      "id": "my_user",
      "pass": "U2FsdGVkX1/C3EDO1MrOLpaWBKnOw1bDeEwR5JGw/IQ=",
      "mail": "me@example.com",
      "url": "https://twitter.com/my_user",
      "text": "備考",
      "updatedAt": "2018-12-12T02:23:08.881Z",
      "createdAt": "2018-12-12T02:23:08.881Z"
    },
    {
      "id": "second_user",
      "pass": "U2FsdGVkX19DKWBMkL4PhRVccAE5/eA86VgcbYh7XUI=",
      "updatedAt": "2018-12-12T02:35:40.275Z",
      "createdAt": "2018-12-12T02:35:40.275Z"
    }
  ],
  "instagram": [
    {
      "id": "my_user",
      "pass": "U2FsdGVkX1+u5HIuY7RovDSQzPUG8g10dI0ebAdNqeI=",
      "mail": "me@example.com",
      "url": "https://instagram.com/my_user",
      "text": "備考",
      "updatedAt": "2018-12-12T02:23:34.467Z",
      "createdAt": "2018-12-12T02:23:34.467Z"
    }
  ]
}
  • createdAtupdatedAt 項目は自動的に追記・更新します

np get : 登録データの検索・表示

# サービス名・ID・パスワード・E-mail・URL・Text を対象に部分一致検索 
$ np get instagram
 
# エイリアス・対象の項目を指定して部分一致検索 
$ np g --id my_user
 
# このコマンドのヘルプを表示します 
$ np get --help

np get に指定できるオプションは以下のとおりです。いずれも大文字・小文字を区別せず部分一致検索します。

  • --id-i : ID
  • --pass-p : パスワード
  • --mail-m : E-mail
  • --url-u : URL
  • --text-t : 備考

上述の2つのコマンドで得られる結果例は以下のとおりです。

$ np get instagram
1 件ヒットしました
 
Service Name | ID      | Password    | E-Mail         | URL                           | Text
------------ | --      | --------    | ------         | ---                           | ----
instagram    | my_user | my_password | me@example.com | https://instagram.com/my_user | 備考
 
$ np g --id my_user
2 件ヒットしました
 
Service Name | ID      | Password    | E-Mail         | URL                           | Text
------------ | --      | --------    | ------         | ---                           | ----
twitter      | my_user | my_password | me@example.com | https://twitter.com/my_user   | 備考
instagram    | my_user | my_password | me@example.com | https://instagram.com/my_user | 備考

パスワードは環境変数 NEOS_MASTER_PASS の文字列を使用して復号するため、データ保存時と異なるマスターパスワードを指定していると、パスワード文字列の復号に失敗します。

# データ保存時と異なるマスターパスワードを設定する 
export NEOS_MASTER_PASS=my_another_password
 
# コマンドを実行するとパスワード欄は「(復号に失敗)」と表示される 
$ np get instagram
1 件ヒットしました
 
Service Name | ID      | Password     | E-Mail         | URL                           | Text
------------ | --      | --------     | ------         | ---                           | ----
instagram    | my_user | (復号に失敗) | me@example.com | https://instagram.com/my_user | 備考

np get-all : 全データを表示

$ np get-all
 
# エイリアス 
$ np l

JSON ファイルの全ての情報を表示します。

上述のコマンドで得られる結果例は以下のとおりです。

$ np get-all
全 3 件
 
Service Name | ID          | Password    | E-Mail         | URL                           | Text
------------ | --          | --------    | ------         | ---                           | ----
twitter      | my_user     | my_password | me@example.com | https://twitter.com/my_user   | 備考
twitter      | second_user | my_password |                |                               |
instagram    | my_user     | my_password | me@example.com | https://instagram.com/my_user | 備考

np rm : データの削除

指定のサービス名と ID、もしくは、サービス名と E-mail に合致するデータを JSON ファイルから削除します。

# サービス名と ID を指定 
$ np rm twitter --id my_user
 
# エイリアス・サービス名と E-mail を指定 
$ np r twitter --mail me@example.com
 
# ショートオプション・サービス名と ID、E-mail を両方指定 
$ np rm twitter -i 'my_user' -m 'me@example.com'
 
# このコマンドのヘルプを表示します 
$ np rm --help

np rm に指定できるオプションは以下のとおりです。

  • --id-i : ID
  • --mail-m : E-mail

コマンドの実行例は以下のとおりです。

$ np rm twitter --id my_user
1 件削除しました

コマンド実行後の JSON ファイルの内容は以下のようになります。

{
  "twitter": [
    {
      "id": "second_user",
      "pass": "U2FsdGVkX19DKWBMkL4PhRVccAE5/eA86VgcbYh7XUI=",
      "updatedAt": "2018-12-12T02:35:40.275Z",
      "createdAt": "2018-12-12T02:35:40.275Z"
    }
  ],
  "instagram": [
    {
      "id": "my_user",
      "pass": "U2FsdGVkX1+u5HIuY7RovDSQzPUG8g10dI0ebAdNqeI=",
      "mail": "me@example.com",
      "url": "https://instagram.com/my_user",
      "text": "備考",
      "updatedAt": "2018-12-12T02:23:34.467Z",
      "createdAt": "2018-12-12T02:23:34.467Z"
    }
  ]
}

Author

Neo (@Neos21)

Links

Keywords

none

Install

npm i @neos21/npm

DownloadsWeekly Downloads

1

Version

0.0.2

License

MIT

Unpacked Size

31.4 kB

Total Files

10

Last publish

Collaborators

  • avatar