2017-05-29 230 views
1

我想telnet端口,並希望得到的輸出保存到文本文件。我查看了兩個解決方案,但沒有一個通過命令提示符爲我工作。批處理文件,需要保存輸出到文本文件的telnet命令在windows

的telnet 127.0.0.1 7000 -f output.txt的

的telnet 127.0.0.1 7000 >> output.txt的

另外,分別檢查此link用於輸出和錯誤用1>和2>。還試圖通過2> & 1將2(stderr)重定向到1(stdout),如本鏈接中所述。

在批處理文件中運行以下代碼後文件沒有任何日誌。但是,如果它能夠遠程登錄端口,它將存儲日誌。但我的要求是從CMD獲取日誌如果Telnet無法擊中連接如下:

連接到127.0.0.1 ......無法打開連接到主機,在端口7002:連接失敗

for port in 7000 7001 7002 
do 
    start cmd.exe /k "telnet 127.0.0.1 $port -f C:\Users\rohit.bagjani\Desktop\result\telnetresult.txt" 
done 
+1

你不能趕上建在這樣的Telnet客戶端的輸出。 MS telnet不支持標準輸入/輸出。更好地考慮第三方telnet客戶端或使用powershell/c## – npocmaka

+0

您在代碼中顯示的'for port'部分永遠不會在windows中工作,那些是Unix/Linux命令。此外,-f將僅在telnet上記錄客戶端端telnet錯誤...不過,您是否想純粹運行此端口測試? –

+0

感謝@npocmaka的評論。 –

回答

0

以管理員身份打開的cmd.exe和運行:

powershell set-executionpolicy Bypass 

創建一個新的文件,並將其命名爲port-test.ps1

粘貼在裏面。

param(
    [string] $rHost = $1, 
    [int] $port = $2 
    ) 

    write-host "Connecting to $rHost on port $port" 
try { 
    $socket = new-object System.Net.Sockets.TcpClient($rHost, $port) 
} catch [Exception] { 
    write-host $_.Exception.GetType().FullName 
    write-host $_.Exception.Message 
    exit 1 
} 

write-host "Connected.`n" 
exit 0 

現在你可以打開的cmd.exe像這樣運行:

powershell -file D:\test\port-test.ps1 hostnamename portnr 

即 的powershell -file d:\測試\ telnetit.ps1 somehost.domain.com 23

如果連接不起作用,您將收到如下消息:

Connecting to somehost.domain.com on port 23 system.Management.Automation.MethodInvocationException Exception calling ".ctor" with "2" argument(s): "No connection could be made because the target machine actively refused it 10.1.2.3:23"

然而,如果它是全成您將獲得:

Connecting to somehost.domain.com on port 23 Connected.

+0

我與我有過這個解決方案,我正在尋找解決方案,直接批處理文件來運行命令行。不管怎麼說,多謝拉。 –

+0

對於批處理,如果無法連接或回顯連接,則可以等待超時和回顯失敗,但這是更可靠的方法。 –

相關問題