0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ConoHaのサーバコンソールに楽々アクセスするためのCLIツールを作った

Posted at

本記事は、めんどい太郎の Advent Calendar 2025 5日目の記事です。

はじめに

突然ですがみなさん、お外でコンソールにアクセスしたいときありませんか?

私はたまーーーーーーーーーにあります。

そこで、VPSのコントロールパネルに大体あるコンソールからアクセスしたりもするのですが毎回数ステップ踏まないといけないのが正直面倒です。

しかし!ConoHaにはAPIがあります!

この前APIのドキュメントを見てみたら、コンソールのURLを取得するエンドポイントがあることに気づきました。

これはね....やるしかないよね()

作ったものをGitHubで公開してるので私も使いたい!って方は是非どうぞ()

できたもの

実行するとこんな感じです。

はじめに、サーバの選択画面が出ます。

image.png

サーバを選択すると、接続方式の選択画面が出ます。

image.png

最後にコンソールのURLが表示されます。

image.png

いい感じ!

開発

CLIツールみたいな感じで作ります。

Node.js使って作ります。

APIを叩く

Node.jsにはhttpsというモジュールがあります。

標準モジュールなのでインストール不要です。

これを使ってGETやPOSTをします。

私は関数化して楽に扱えるようにします。

例えば次のような関数です。

function get_request(url) {
  return new Promise((resolve, reject) => {
    const options = {
      method: 'GET',
      headers: {
        'Accept': 'application/json',
      }
    };
    const req = https.request(url, options, (res) => {
      let data = '';
      res.on('data', (chunk) => {
        data += chunk;
      });
      res.on('end', () => {
        resolve({
          res: res,
          data: data
        });
      });
    });
    req.on('error', (e) => {
      reject(e);
    });
    req.end();
  });
}

HTTP通信をするので、非同期処理となります。

そのため、関数を呼び出す側でawaitできるようにPromiseを返します。

あとは、ヘッダーとかを書いてリクエスト送信と送信後の処理を書いておきます。

CLIで選択させる

サーバの選択をユーザにしてもらう必要があります。

そこで、promptsというパッケージを使います。

これを使えば、矢印キーで選択できるものが作れます。

こんなやつ↓

image.png

image.png

こんな感じで書けます

function select_connect_type() {
  return new Promise(async (resolve, reject) => {
    const answer = await select({
      message: '接続方式を選択してください。',
      choices: [
        { name: 'VNCコンソール', value: { protocol: 'vnc', type: 'novnc' } },
        { name: 'シリアルコンソール', value: { protocol: 'serial', type: 'serial' } },
        { name: 'WebSocketコンソール', value: { protocol: 'web', type: 'serial' } }
      ]
    });

    resolve(answer);
  });
}

おわりに

いい感じ!!

ConoHaのAPIを使うことで、コンソールに楽々アクセスできるCLIツールができました。

これでコントロールパネルにログインして...などの手間が減りました!やったね!

ただ、エラーハンドリングなどをちゃんと実装してなくて実装が甘々なので直さないとです。

まぁそのうちやるよ()

それではまた!

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?