Help us understand the problem. What is going on with this article?

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のススメ

nettle0010
I'm a software engineer. Python3/Embulk/Digdag/Presto/Hive/Elasticsearch
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away