使用 Ruby 打开命令提示符时 Telnet 无效
Telnet not valid when opening command prompt with Ruby
当我手动打开命令提示符并键入以下命令时,我从正在 ping 的服务器收到了响应。
telnet <server> <port>
当我使用 Ruby 打开命令提示符时,使用以下命令和 运行 上面相同的 telnet 命令,我得到“'telnet' 未被识别为内部或外部命令、可运行程序或批处理文件。'
Ruby 命令:
system('start cmd.exe)
它可以正常打开提示,但命令本身不起作用,我不确定为什么会这样。
一些好的后续步骤是:
- 使用
WHERE
找到 telnet.exe
,然后使用 telnet.exe
. 的路径调用 system
- 我建议使用
Open3.popen3()
而不是 system
,这样您就可以通过 STDIN
、STDOUT
和 STDERR
与实际的 telnet 程序进行交互.
- 最后,我建议您使用
net-telnet
而不是上述任何选项,因为它公开了一个更容易 API 使用而不是包装 Windows Telnet 客户端。
cmd.exe
不在您 运行 irb
所在的位置(或者您的 ruby shell.
您需要将完整路径传递给 cmd.exe
,包括任何 illegal path characters 的转义符,例如C:\some\folder\path\to\cmd.exe
system('start C:\some\folder\path\to\cmd.exe')
当我手动打开命令提示符并键入以下命令时,我从正在 ping 的服务器收到了响应。
telnet <server> <port>
当我使用 Ruby 打开命令提示符时,使用以下命令和 运行 上面相同的 telnet 命令,我得到“'telnet' 未被识别为内部或外部命令、可运行程序或批处理文件。'
Ruby 命令:
system('start cmd.exe)
它可以正常打开提示,但命令本身不起作用,我不确定为什么会这样。
一些好的后续步骤是:
- 使用
WHERE
找到telnet.exe
,然后使用telnet.exe
. 的路径调用 - 我建议使用
Open3.popen3()
而不是system
,这样您就可以通过STDIN
、STDOUT
和STDERR
与实际的 telnet 程序进行交互. - 最后,我建议您使用
net-telnet
而不是上述任何选项,因为它公开了一个更容易 API 使用而不是包装 Windows Telnet 客户端。
system
cmd.exe
不在您 运行 irb
所在的位置(或者您的 ruby shell.
您需要将完整路径传递给 cmd.exe
,包括任何 illegal path characters 的转义符,例如C:\some\folder\path\to\cmd.exe
system('start C:\some\folder\path\to\cmd.exe')