【问题标题】:Tcl Expect Keep SSH Spawn openTcl Expect 保持 SSH Spawn 打开
【发布时间】: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


【解决方案1】:

我通过将期望输出保存到文件中解决了这个问题。 在后台启动后,ssh 想验证我的 ssl 指纹。 接受后,效果很好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多