Tcl Expect保持SSH Spawn打开

时间:2014-12-22 09:25:19

标签: mysql ssh tcl expect spawn

我想打开一个生成的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
}

1 个答案:

答案 0 :(得分:0)

我通过将expect输出保存到文件中来解决这个问题。 在后台启动后,ssh想验证我的ssl指纹。 在接受之后,它运作良好。