通过 Telnet 执行从 Debian 到 Windows 的远程命令
Execute remote commands from Debian to Windows via Telnet
我正在 Windows 从 Debian 远程执行命令行。为此,我尝试使用下面的 bash 脚本。使用 expect 工具,它包括通过 telnet 连接到远程服务器,输入用户名和密码值并发送所需的命令行。
#!/usr/bin/expect
set timeout 20
set name 192.168.1.46
set user Administrateur
set password MSapp/*2013
set cmd "TASKKILL /F /IM Tomcat6.exe"
spawn telnet 192.168.1.46
expect "login:"
send "$user\r"
expect "password:"
send "$password\r"
expect "C:\Users\Administrateur>"
send "$cmd\r"
telnet 连接已建立。但是,命令行没有执行。
有人能告诉我我的脚本有什么问题吗?
只需要在最后添加一条expect
语句,如下,
send "$cmd\r"
expect "C:\Users\Administrateur>"
基本上,expect
将使用两个可行的命令,例如 send
和 expect
。如果使用 send
,则之后必须有 expect
(在大多数情况下)。 (反之亦然不是强制性的)
这是因为如果没有它,我们将错过生成进程中发生的事情,因为 expect
将假设您只需要发送一个字符串值,而不期望从会话中获得任何其他内容。
我正在 Windows 从 Debian 远程执行命令行。为此,我尝试使用下面的 bash 脚本。使用 expect 工具,它包括通过 telnet 连接到远程服务器,输入用户名和密码值并发送所需的命令行。
#!/usr/bin/expect
set timeout 20
set name 192.168.1.46
set user Administrateur
set password MSapp/*2013
set cmd "TASKKILL /F /IM Tomcat6.exe"
spawn telnet 192.168.1.46
expect "login:"
send "$user\r"
expect "password:"
send "$password\r"
expect "C:\Users\Administrateur>"
send "$cmd\r"
telnet 连接已建立。但是,命令行没有执行。
有人能告诉我我的脚本有什么问题吗?
只需要在最后添加一条expect
语句,如下,
send "$cmd\r"
expect "C:\Users\Administrateur>"
基本上,expect
将使用两个可行的命令,例如 send
和 expect
。如果使用 send
,则之后必须有 expect
(在大多数情况下)。 (反之亦然不是强制性的)
这是因为如果没有它,我们将错过生成进程中发生的事情,因为 expect
将假设您只需要发送一个字符串值,而不期望从会话中获得任何其他内容。