本記事は、めんどい太郎の Advent Calendar 2025 5日目の記事です。
はじめに
突然ですがみなさん、お外でコンソールにアクセスしたいときありませんか?
私はたまーーーーーーーーーにあります。
そこで、VPSのコントロールパネルに大体あるコンソールからアクセスしたりもするのですが毎回数ステップ踏まないといけないのが正直面倒です。
しかし!ConoHaにはAPIがあります!
この前APIのドキュメントを見てみたら、コンソールのURLを取得するエンドポイントがあることに気づきました。
これはね....やるしかないよね()
作ったものをGitHubで公開してるので私も使いたい!って方は是非どうぞ()
できたもの
実行するとこんな感じです。
はじめに、サーバの選択画面が出ます。
サーバを選択すると、接続方式の選択画面が出ます。
最後にコンソールのURLが表示されます。
いい感じ!
開発
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というパッケージを使います。
これを使えば、矢印キーで選択できるものが作れます。
こんなやつ↓
こんな感じで書けます
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ツールができました。
これでコントロールパネルにログインして...などの手間が減りました!やったね!
ただ、エラーハンドリングなどをちゃんと実装してなくて実装が甘々なので直さないとです。
まぁそのうちやるよ()
それではまた!




