2014-12-22 47 views
0

我想打开一个产卵SSH连接,然后查询MySQL服务器的新用户(在一个循环中),如果发现一个新的用户应该发送一个命令通过期望这个SSH连接。Tcl期望保持SSH产卵开放

我不知道这是否可能,直到现在我总是杀死ssh.exe,当我在MySQL查询后尝试“发送”命令。

我想让SSH打开,因为用Expect登录需要10秒(Host ist slow),并且我不希望每次创建用户都暂停一次。

我该怎么做?

我在做什么:

... 
set db [::mysql::connect -host 127.0.0.1 -user root -password **** -db test] 
spawn ssh [email protected] 
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

只是好奇......为什么数据库级别的触发器不是你想要的? – mmmmmpie

+0

以及我从来没有与数据库触发器合作..所以我不知道这种可能性谢谢,但想法是,我有一个ssh连接打开所有的时间,然后发送一个新的用户时发出一个命令.. 。 – Rory

+0

当Expect脚本完成时,SSH连接将被关闭。在您的Expect脚本中,只需使用'for'或'while'循环将命令发送到远程服务器即可。 – pynexj

回答

0

由我希望输出保存到一个文件解决了这个。 在后台启动后,ssh想验证我的ssl指纹。 接受后,它工作正常。