ssh
en sí mismo puede hacerlo a través de Match
documentado, ssh_config(5)
aunque la documentación es algo escasa en ejemplos. Este formulario puede ser adecuado si se quiere introducir la complejidad en la configuración de SSH, aunque está restringido por las limitaciones de la ssh_config(5)
sintaxis y puede requerir un poco de manipulación para el resultado deseado. En particular, el puerto personalizado no se puede configurar o se puede configurar incorrectamente desde el Match
intento anterior . Es por eso que, a continuación, se establece dos veces cuando se prueba, o una vez por defecto, y no se establece al establecer los valores predeterminados canónicos.
# 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
simplemente verifica si algo responde en el puerto dado y podría verse como
#!/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
ssh
presencia para el exterior.