作業環境が 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 で設定できるので、最終的な接続先だけ選べばいいのは楽になったかなと思っています。