LoginSignup
0
0

More than 5 years have passed since last update.

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

Posted at

作業環境が 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のススメ

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0