ssh
ตัวเองสามารถทำสิ่งนี้ผ่านMatch
เอกสารssh_config(5)
แม้ว่าเอกสารจะค่อนข้างเบาบางในตัวอย่าง แบบฟอร์มนี้อาจเหมาะสมหากต้องการผลักดันความซับซ้อนไปยังการกำหนดค่า SSH แม้ว่าจะถูก จำกัด โดยข้อ จำกัด ของssh_config(5)
ไวยากรณ์และอาจต้องเล่นซอกับผลลัพธ์ที่ต้องการ สะดุดตาพอร์ตที่กำหนดเองไม่สามารถตั้งค่าหรือสามารถตั้งค่าผิดจากMatch
ความพยายามก่อนหน้า นี่คือสาเหตุที่ด้านล่างมันถูกตั้งค่าสองครั้งเมื่อทดสอบหรือครั้งเดียวสำหรับค่าเริ่มต้นและไม่ได้ตั้งค่าเมื่อสร้างค่าเริ่มต้นที่เป็นที่ยอมรับ
# 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