2014-12-22 48 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指紋。 接受後,它工作正常。