sshconf(~/.ssh/config を表示するターミナルユーティリティ)

1. 概要

~/.ssh/configの内容を参照するためのターミナルユーティリティ。

~/.ssh/configを指定フォーマットで書いておけば設定名や設定内容を参照できる。

2. スクリプト

#!/usr/local/bin/php
<?php
/**
 * sshconf
 * ~/.ssh/config を表示する
 * @version 2013.05
 */

define('CONFIG_FILE',	getenv('HOME'). '/.ssh/config');

echo "\n*** ". CONFIG_FILE. " ***\n";

/*
 * パラメタなし... 全設定名を表示
 */
if (!isset($argv[1])){
    foreach (@file(CONFIG_FILE) as $line){
        $ck = strtoupper(trim($line));
        if ('#'     == substr($ck, 0, 1))  echo "\n{$line}";
        if ('HOST ' == substr($ck, 0, 5))  echo $line;
    }
}


/*
 * パラメタあり... 該当設定の内容表示
 */
if (isset($argv[1])){
    $disp = false;
    $arg1 = strtoupper($argv[1]);

    foreach (@file(CONFIG_FILE) as $line){
        $ck = strtoupper(trim($line));
        if ('HOST ' == substr($ck, 0, 5) && strpos($ck, $arg1, 5) >  1) $disp = true;
        if ('#'     == substr($ck, 0, 1))                               $disp = false;
        if ('HOST ' == substr($ck, 0, 5) && strpos($ck, $arg1, 5) == 0) $disp = false;
        if ($disp) echo $line;
    }
}

echo "\n";

3. ~/.ssh/config の例

$ cat ~/.ssh/config
# --------------- global setting for macOS Sierra
ServerAliveInterval 30
ServerAliveCountMax 3
Host *
        UseKeychain yes
        AddKeysToAgent yes
# --------------- hoge
Host hoge
        HostName hoge.jp
        User user1
# --------------- fuga
Host fuga1
        HostName fuga.jp
        Port 20022
        User fuga1
        LocalForward 20080 localhost:80
        GatewayPorts yes
Host fuga2
        HostName fuga.jp
        Port 20022
        User fuga2
# --------------- piyo
Host piyo1
        HostName piyo.jp
        Port 30002
        User piyo1
Host piyo2
        HostName piyo.jp
        Port 30002
        User piyo2

「#」はmarkdownパーサが誤作動するので全角にしています。実際のコメント行は半角#です。

4. 使用方法

//全ホスト名を表示
$ sshconf

*** /Users/XXXX/.ssh/config ***

# --------------- global setting for macOS Sierra
Host *

# --------------- hoge
Host hoge

# --------------- fuga
Host fuga1
Host fuga2

# --------------- piyo
Host piyo1
Host piyo2


//指定ホストの詳細を表示
$ sshconf pi

*** /Users/XXXX/.ssh/config ***
Host piyo1
        HostName piyo.jp
        Port 30002
        User piyo1
Host piyo2
        HostName piyo.jp
        Port 30002
        User piyo2
  • やっつけで作ってるのでconfigの書き方に柔軟性は無いです。
  • こんなもんでも役に立ってます。grepしたりエディタで開いて検索したりするよりは随分と便利です。