當我手動打開命令提示符並鍵入以下命令時,我收到來自服務器的響應,正在ping。使用Ruby打開命令提示符時,Telnet無效
telnet <server> <port>
當我打開用Ruby命令提示,使用下面的命令,並運行上述相同的telnet命令,我得到「」的telnet」不被識別爲內部或外部命令,可操作的程序或批處理文件「。
紅寶石命令:
system('start cmd.exe)
它打開了提示罰款,但命令本身不工作,我不知道到這是爲什麼。
當我手動打開命令提示符並鍵入以下命令時,我收到來自服務器的響應,正在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