使用Ruby打开命令提示符时Telnet无效

使用Ruby打开命令提示符时Telnet无效,ruby,shell,telnet,Ruby,Shell,Telnet,当我手动打开命令提示符并键入以下命令时,我从正在ping的服务器得到响应 telnet <server> <port> 它会很好地打开提示,但命令本身不起作用,我不知道为什么会这样。接下来的一些好步骤是: 使用找到telnet.exe,然后调用system,路径为telnet.exe 我建议使用,而不是system,这样您就可以通过STDIN、STDOUT和STDERR与实际的telnet程序进行交互 最后,我建议您不要使用上述任何选项,因为它公开了一个比包装Wind

当我手动打开命令提示符并键入以下命令时,我从正在ping的服务器得到响应

telnet <server> <port>

它会很好地打开提示,但命令本身不起作用,我不知道为什么会这样。

接下来的一些好步骤是:

  • 使用找到
    telnet.exe
    ,然后调用
    system
    ,路径为
    telnet.exe
  • 我建议使用,而不是
    system
    ,这样您就可以通过
    STDIN
    STDOUT
    STDERR
    与实际的telnet程序进行交互
  • 最后,我建议您不要使用上述任何选项,因为它公开了一个比包装Windows Telnet客户端更容易使用的API
      接下来的一些好步骤是:

      • 使用找到
        telnet.exe
        ,然后调用
        system
        ,路径为
        telnet.exe
      • 我建议使用,而不是
        system
        ,这样您就可以通过
        STDIN
        STDOUT
        STDERR
        与实际的telnet程序进行交互
      • 最后,我建议您不要使用上述任何选项,因为它公开了一个比包装Windows Telnet客户端更容易使用的API
      cmd.exe
      不在运行
      irb
      (或任何ruby shell)的位置

      您需要将完整路径传递到
      cmd.exe
      ,包括任何转义,例如
      C:\some\folder\path\to\cmd.exe

      system('start C:\some\folder\path\to\cmd.exe')
      

      cmd.exe
      不在您运行
      irb
      (或任何ruby shell)的位置

      您需要将完整路径传递到
      cmd.exe
      ,包括任何转义,例如
      C:\some\folder\path\to\cmd.exe

      system('start C:\some\folder\path\to\cmd.exe')
      

      你需要更具体地告诉我。什么是由
      cmd.exe运行的?你是如何调用命令或启动ruby的?你能把这个问题分解成更小的步骤吗?如果你打开一个
      irb
      实例并在那里键入你的命令怎么办?当我运行系统('start cmd.exe')时,它正在执行命令提示符可执行文件(打开命令提示符)。然后,我在使用上一个命令打开的命令提示符中手动输入telnet命令,我看到错误消息,您需要更具体地告诉我。由
      cmd.exe运行的是什么?您如何调用该命令或启动ruby?您能将此问题分解为更小的步骤吗?如果打开
      irb
      实例并键入在您的命令中?当我运行系统('start cmd.exe')时,它正在执行命令提示符可执行文件(以打开命令提示符)。然后,我在使用上一个命令打开的命令提示符中手动输入telnet命令,我看到错误消息Don't use back slash with a double quoted string。您正在询问问题,因为有几个反斜杠+字母组合被解释为转义字符。相反,请做简单的事情,使用前向斜杠并让R我试着用以下命令使用这两个完整路径:system(“start C://\Windows/\System32/\/cmd.exe”)这会按预期打开提示,但telnet仍然会发出提示arises@aswerlein511当然,那么您需要遵循David的解决方案,使用
      Open3
      ruby lib进行调试,不要将反斜杠与双引号字符串一起使用。因为有几个反斜杠+字母组合被解释为转义,所以您会问问题相反,做一件简单的事,使用斜杠,让Ruby为您处理它们。
      “\some\folder\path\to\cmd.exe”\35;=>“ome\folderpath\to\rd.exe”
      我尝试使用以下命令使用这两个完整路径:system(“start C://\Windows/\System32/\/cmd.exe”)这会按预期打开提示,但telnet仍然会发出提示arises@aswerlein511当然,那么您需要遵循David的解决方案,使用
      Open3
      ruby lib进行调试感谢David的响应。我无法从ruby中执行telnet.exe…但我确实使用了您提到的net telnet gem,它能够做我需要的。谢谢!谢谢David的回复。我无法从Ruby中执行telnet.exe…但我确实使用了你提到的net telnet gem,它可以做我需要的。谢谢!