【发布时间】:2014-12-22 09:25:18
【问题描述】:
我想打开一个 spawn SSH 连接,然后向 MySQL 服务器查询新用户(循环),如果找到新用户,则应通过 Expect 将命令发送到此 SSH 连接。
我不知道这是否可能,到目前为止,当我在 MySQL Query 之后尝试“send”命令时,我总是杀死 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
}
【问题讨论】:
-
只是好奇...为什么数据库级别的触发器不是您想要的?
-
好吧,我从来没有使用过数据库触发器..所以我不知道这种可能性,谢谢,但我的想法是,我一直打开一个 ssh 连接,然后在什么时候发送一个命令发现新用户...
-
Expect 脚本完成后,SSH 连接将关闭。在您的 Expect 脚本中,您可以简单地使用
for或while循环随时向远程服务器发送命令。
标签: mysql ssh tcl expect spawn