我想打开一个生成的SSH连接,然后为新用户查询MySQL服务器(在循环中),如果找到新用户,则应通过Expect将命令发送到此SSH连接。
我不知道这是否可能,到目前为止,当我在MySQL查询后尝试“发送”命令时,我总是杀死ssh.exe。
我希望SSH能够打开,因为使用Expect登录需要10秒钟(主机速度慢),而且每次创建用户时都不希望暂停。
我该怎么做?
我在做什么:
...
set db [::mysql::connect -host 127.0.0.1 -user root -password **** -db test]
spawn ssh admin@192.168.1.2
expect {
timeout { send_user "\nFalscher SSH User admin!\n"; exit 1 }
"User:"
}
send "admin\r"
expect {
timeout { send_user "\nFalscher SSH User admin!\n"; exit 1 }
"Password:"
}
send "******\r"
set x = 1
while {$x>0} {
set query [::mysql::query $db {SELECT username, passwort FROM users WHERE erstellt='0'}]
while {[set row [::mysql::fetch $query]]!=""} {
set username [lindex $row 0]
set passwort [lindex $row 1]
send "create user...;\r"
}
::mysql::endquery $query
after 2000
}
答案 0 :(得分:0)
我通过将expect输出保存到文件中来解决这个问题。 在后台启动后,ssh想验证我的ssl指纹。 在接受之后,它运作良好。