ssh
例ではドキュメントがややまばらですが、それ自体がMatch
ドキュメント化された方法でこれを行うことができますssh_config(5)
。この形式は、SSH構成に複雑さをプッシュしたい場合に適していssh_config(5)
ますが、構文の制限によって制限されており、目的の結果を得るためにいくつかの操作が必要になる場合があります。特に、カスタムポートを設定できないか、前回のMatch
試行から誤って設定されている可能性があります。これが、以下では、テスト時に2回、またはデフォルトに対して1回設定され、正規のデフォルトを確立するときに設定されない理由です。
# here we set the defaults for the host (no port!)
Match !canonical host testhost
CanonicalizeHostname yes
Hostname 192.0.2.42
IdentityFile ~/.ssh/id_blahblah
...
# port available?
Match canonical host 192.0.2.42 exec "is-ssh-up %h 2222"
Port 2222
# or the default port
Match canonical host 192.0.2.42
Port 22
is-ssh-up
指定されたポートで何かが応答するかどうかを確認するだけで、次のようになります。
#!/usr/bin/env expect
package require Tcl 8.5
if {[llength $argv] < 2} {
puts stderr "Usage: is-ssh-up host port"
exit 1
}
puts stderr "is-ssh-up: DEBUG trying $argv"
set socket [socket -async [lindex $argv 0] [lindex $argv 1]]
chan event $socket readable [list exit 0]
after 3000 [list exit 1]
vwait godot