Posted at

Xonsh のスクリプトで ssh の config を読み込んで、選択した番号のサーバーに接続する

More than 1 year has passed since last update.

作業環境が Windows から Mac に変更になり ssh クライアントをどうしようかと考えてました。

前は MobaXterm を使っていて接続先を保存しておけば何回かクリックしただけでトンネリングしつつ別サーバーにログインするということができました。

Mac の場合だとターミナルから普通に別サーバーにログインできるのですが、接続したいサーバーがたくさんあって覚えきれないので ssh の config に設定を書きました。

ということで、今回はその config を Xonsh のスクリプトで読み込むことにしました。

手元の環境は以下になります。


  • MacBook Pro (13-inch, 2017, Two Thunderbolt 3 ports)

  • macOS High Sierra 10.13.6

  • Python 3.6.5 :: Anaconda, Inc.

  • xonsh==0.6.10

スクリプトは以下になります。

read_ssh_config

以下のような感じで選択した番号について ssh 接続します。

$ xonsh ssh_list.xsh

Selection Host
-----------------------------------------------------
0 aaaa.bbbb.cccc
1 dddd.eeee

please select number:1
start connection.

bash でも同じことはできると思うのですが、ファイルを読み込んで抽出したリストを使って ssh コマンドを実行するというところを Python3 で書けたのが良かったです。

target_hosts = []

with open(dir + '/config') as f:
for row in f:
if row.startswith('Host '):
host = row.replace('Host ', '').replace('\n', '')
target_hosts.append(host)
.
.
.
ssh @(target_hosts[int(selected_num)])

多段でのトンネリングも config で設定できるので、最終的な接続先だけ選べばいいのは楽になったかなと思っています。


参考になった記事

Pythonistaに贈るXonshのススメ