macOS Catalinaでtelnet URLスキームを手軽に扱う

技術ネタ

macOSもSierraまではtelnetが標準でついてたんだけど、High Sierraからは同梱されなくなったんですよね。そんなときの助けがHomebrew。 brew install telnetとか brew install inetutilsすれば /usr/local/bin/telnetにインストールされるので、PATHさえ通ってればこれまで通りCLIから使えるので困りません。

困るのは…URLスキームから飛ぶ場合。

URLスキームってなんやねん、っていうと、簡単に言えばHTMLで書かれたページに telnet://127.0.0.1:3000みたいなリンクが書かれていた場合にどのアプリケーションで開くか、っていう定義のこと。
自分のところでどう扱われるか見たければ、ターミナルから

open telnet://route-views.wide.routeviews.org

ってやってみると良いです。このとき、WIDEプロジェクトが提供する RouteViews のルータにちゃんとログインできればなんの問題もないです。だけどこんな風に「telnetのパスが見つからない」エラーになってる場合は、telnetのURLスキームがまともに扱えていないと言えます。

これまでの対処法

これまでは

  • Homebrew でインストールした telnetバイナリ
  • Sierra からコピーしてきた telnetバイナリ

のどちらかを /usr/bin/telnet にコピー、もしくはシンボリックリンク( ln -s /usr/local/bin/telnet /usr/bin/telnet )する方法がありましたが、macOS Catalina からはシステムディレクトリが読み取り専用となったため、この方法は使えなくなっています。

macOS Catalina の読み取り専用のシステムボリュームについて - Apple サポート (日本)
macOS Catalina は、Mac 上のほかのファイルとは切り離された読み取り専用のシステムボリュームで実行されます。Catalina にアップグレードすると、2 つ目のボリュームが作成され、ファイルによっては一部「Relocated Items」に移動する場合があります。
macOS 10.15 CatalinaではシステムボリュームがRead-Onlyになり、アプリはユーザーデータのみにアクセス可能に。
macOS 10.15 CatalinaではシステムボリュームがRead-Onlyになり、アプリはユーザーデータのみにアクセス可能になるそうです。詳細は以下から。

手っ取り早い対処

iTerm2 を使いましょう!

iTerm2 - macOS Terminal Replacement
iTerm2 is a replacement for Terminal and the successor to iTerm

iTerm2 は接続設定(プロファイル)を複数持てるのですが、そのプロファイルでどのURLスキームを扱うかを設定することができます。

なので、telnet 接続専用のプロファイルを作って、そのプロファイルで telnet URLスキームを取り扱う、というのが手っ取り早い解決策となります。
具体的には、以下のような設定を作ればよいのです。

  1. 新規にプロファイルを作成し、Commandに「 /usr/local/bin/telnet $$HOST$$ $$PORT$$ 」を指定します。そして、画面下部の「Select URL Schemes…」をクリックします。
  2. Telnet を扱いたいので「telnet」を選択します。
  3. Telnet URLスキームを扱うデフォルトアプリとして良いか?と聞かれるのでOKをクリックします。

これで、先程のエラーになっていたコマンドを実行することで、iTerm2 のターミナル上で /usr/local/bin/telnetを呼び出して接続できるようになります。

タブを見ると、先ほど作成した「telnet session」が選択されていることがわかります。

何に使えるの?

これが何に有用なの?って話になるのですが、EVE-NGっていうGNS3みたいなシミュレーション環境でノードのコンソールに接続する際にtelnetを使うので、どうしても必要になるんです。

Home -
EVE-NG Professional Edition Latest Now: Release 5.0.1-142, 03 April, 2024   EVE-NG PRO platform is ready for today’s IT-world requirements. It allows enterprise...

GNS3以外の環境を試してみようかと思ったけど、まさかこんなところでハマるとは思いませんでした… orz

コメント

タイトルとURLをコピーしました