使用Ruby打开命令提示符时,Telnet无效
当我手动打开命令提示符并键入以下命令时,我收到来自服务器的响应,正在ping。使用Ruby打开命令提示符时,Telnet无效
telnet <server> <port>
当我打开用Ruby命令提示,使用下面的命令,并运行上述相同的telnet命令,我得到“”的telnet”不被识别为内部或外部命令,可操作的程序或批处理文件“。
红宝石命令:
system('start cmd.exe)
它打开了提示罚款,但命令本身不工作,我不知道到这是为什么。
一些好的接下来的步骤是:
- 使用
WHERE
找到telnet.exe
,然后用路径调用system
到telnet.exe
。 - 而不是
system
,我建议使用Open3.popen3()
,以便您可以通过STDIN
,STDOUT
和STDERR
与实际的telnet程序进行交互。 - 最后,而不是上述任何选项,我建议您使用
net-telnet
,因为它暴露了一个更简单的API使用与包装Windows Telnet客户端。
感谢David的回应。我无法从Ruby内部执行telnet.exe,但我确实使用了您提到的net-telnet gem,并且能够执行我所需的操作。谢谢! – aswerlein511
cmd.exe
不位于从已运行irb
(或者是你的Ruby外壳的地方。
您需要的完整路径传递给cmd.exe
,包括逃逸任何illegal path characters,如C:\some\folder\path\to\cmd.exe
system('start C:\some\folder\path\to\cmd.exe')
请勿在双引号字符串中使用反斜线。由于几个反斜杠+字母组合被解释为转义字符,因此您会问题。相反,做简单的事情并使用正斜杠并让Ruby为您处理它们。 '“\ some \ folder \ path \ to \ cmd.exe”#=>“ome \ folderpath \ to \ rd.exe” –
我已经尝试使用以下命令的完整路径: system(“start C :/ \ Windows/\ System32/\/cmd.exe“) ,按预期打开提示,但同样,telnet问题仍然出现 – aswerlein511
@ aswerlein511肯定,那么您需要遵循David S的解决方案, 'Open3'红宝石库 –
你需要我更加具体。什么是'cmd.exe'?您是如何调用命令或启动红宝石运行?你能分解这个问题分成更小的步骤是什么?如果什么你开一个' irb“实例并输入你r命令在那里? – Puhlze
当我运行系统('start cmd.exe')时,它正在执行命令提示符可执行文件(以打开命令提示符)。然后我在用前面的命令打开的命令提示符中手动输入telnet命令,然后我看到错误消息 – aswerlein511