set file [open "~/sh/Server/servers.conf"]
set servers [split [read $file] "\n"]
puts "Available servers:"
foreach server $servers {
if {[regexp {^(\d+)\)\s+([^\s:]+):\s+([^\s@]+)@([^\s:]+):(\d+):(\w+)(:(.*))?} $server -> number name user host port method details]} {
send_user "Select a server to connect to \[number\]: "
set chosen_server_info ""
foreach server $servers {
if {[regexp {^(\d+)\) ([^\s:]+):\s+([^@]+)@([^:]+):(\d+):(\w+)(?::([^:]+))?} $server -> number name user host port method pwd]} {
if {$number eq $choice} {
set chosen_server_info "$user@$host"
if {$chosen_server_info eq ""} {
puts "Server choice not found. Exiting."
switch -- $login_method {
puts "Connecting to $chosen_server_info using SSH key..."
spawn ssh -o ServerAliveInterval=60 $chosen_server_info -p $port
puts "Connecting to $chosen_server_info on port $chosen_port using password..."
spawn ssh -o "StrictHostKeyChecking=no" -p $chosen_port $chosen_server_info
send_user "Enter password for $chosen_server_info: "
set password [gets stdin]
puts "Connecting to $chosen_server_info..."
spawn ssh -o "StrictHostKeyChecking=no" -p $chosen_port $chosen_server_info
puts "Unknown login method: $login_method"

Server.conf
1) server_name: user@ip:port:method[:pwd]
1) OpenWrt: root@192.168.1.1:22:pwd:password
2) aliyun: root@192.168.1.1:22:key
实现效果
