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
}
只是好奇......为什么数据库级别的触发器不是你想要的? – mmmmmpie
以及我从来没有与数据库触发器合作..所以我不知道这种可能性谢谢,但想法是,我有一个ssh连接打开所有的时间,然后发送一个新的用户时发出一个命令.. 。 – Rory
当Expect脚本完成时,SSH连接将被关闭。在您的Expect脚本中,只需使用'for'或'while'循环将命令发送到远程服务器即可。 – pynexj