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 からはシステムディレクトリが読み取り専用となったため、この方法は使えなくなっています。
手っ取り早い対処
iTerm2 を使いましょう!
iTerm2 は接続設定(プロファイル)を複数持てるのですが、そのプロファイルでどのURLスキームを扱うかを設定することができます。
なので、telnet 接続専用のプロファイルを作って、そのプロファイルで telnet URLスキームを取り扱う、というのが手っ取り早い解決策となります。
具体的には、以下のような設定を作ればよいのです。
- 新規にプロファイルを作成し、Commandに「
/usr/local/bin/telnet $$HOST$$ $$PORT$$
」を指定します。そして、画面下部の「Select URL Schemes…」をクリックします。
- Telnet を扱いたいので「telnet」を選択します。
- Telnet URLスキームを扱うデフォルトアプリとして良いか?と聞かれるのでOKをクリックします。
これで、先程のエラーになっていたコマンドを実行することで、iTerm2 のターミナル上で /usr/local/bin/telnet
を呼び出して接続できるようになります。
タブを見ると、先ほど作成した「telnet session」が選択されていることがわかります。
何に使えるの?
これが何に有用なの?って話になるのですが、EVE-NGっていうGNS3みたいなシミュレーション環境でノードのコンソールに接続する際にtelnetを使うので、どうしても必要になるんです。
GNS3以外の環境を試してみようかと思ったけど、まさかこんなところでハマるとは思いませんでした… orz
コメント