gpt4 book ai didi

windows - 使用批处理脚本在 Windows 7 上自动进行 telnet 端口测试

转载 作者:可可西里 更新时间:2023-11-01 14:50:19 25 4
gpt4 key购买 nike

我使用的是 Windows 7 x64。使用 bat 脚本,我需要检查我是否能够使用 telnet 连接到服务器上的某些特定端口。如果连接成功,服务器会显示一个菜单,或者显示如下消息:Connecting To xxxxx...Could not open connection to the host, on port xxxxx: Connect failed.

为了我的目的,服务器有几个端口需要测试,我不想通过登录或导航菜单使事情复杂化。我只想要一个简单的输出来指示连接是否成功。检查退出状态不起作用。我不想使用 Visual Basic。知道如何使用 bat 脚本检查连接状态吗?目前我目视检查并使用下面的脚本打开连接

@ECHO OFF
setlocal EnableDelayedExpansion

echo.
SET /P host_name="Please enter the hostname: "
echo Please enter the port numbers followed by the Enter key:
echo.
set num=0

:Loop
set /a num=num+1
SET /P mwa_port%num%=""
if "!mwa_port%num%!"=="" (goto Start)
goto Loop

:Start
set /a num=num-1
for /L %%i in (1,1,%num%) do (
echo Trying to log into port !mwa_port%%i! of %host_name%
start /min "" "C:\Windows\System32\telnet.exe" %host_name% !mwa_port%%i!
REM echo Exit Code is %errorlevel%
)

:End
endlocal
echo.
SET /P leave="Press any key to exit.."

这是脚本的示例输出:

Please enter the hostname : abcdefg.hijkl.mnop
Please enter the port numbers followed by the Enter key:

10001
10002
10003
10004
10005

Trying to log into port 10001 of abcdefg.hijkl.mnop
Trying to log into port 10002 of abcdefg.hijkl.mnop
Trying to log into port 10003 of abcdefg.hijkl.mnop
Trying to log into port 10004 of abcdefg.hijkl.mnop
Trying to log into port 10005 of abcdefg.hijkl.mnop

Press any key to exit..

然后它以最小化状态打开 5 个 telnet 窗口,每个窗口都有一个成功登录的菜单

最佳答案

遗憾的是您不能使用 netcat - 像它这样的所有开源选项在您的环境中都是禁区吗?

即使没有开源工具,您仍然可以使用 PowerShell 完成此任务。

这是一个示例 PS 脚本,它将尝试连接到 $remoteHost 上的端口 23,并在成功时退出 0,在失败时退出 1。 (如果您在连接后需要做更多的工作,网络上提供了一些更复杂的 PowerShell telnet 客户端示例,例如 this one。)

将代码放在文件“foo.ps1”中,然后使用“powershell -File foo.ps1”在 cmd.exe(或从 .bat 文件)中运行。当它退出时,退出代码将存储在 %errorlevel%。

请注意,您可能需要修改 PowerShell 脚本执行策略(或使用 "-ExecutionPolicy Bypass" cmdline option )以允许执行脚本 - 有关详细信息,请参阅 this documentation from MSFT .

param(
[string] $remoteHost = "arbitrary-remote-hostname",
[int] $port = 23
)

# Open the socket, and connect to the computer on the specified port
write-host "Connecting to $remoteHost on port $port"
try {
$socket = new-object System.Net.Sockets.TcpClient($remoteHost, $port)
} catch [Exception] {
write-host $_.Exception.GetType().FullName
write-host $_.Exception.Message
exit 1
}

write-host "Connected.`n"
exit 0

关于windows - 使用批处理脚本在 Windows 7 上自动进行 telnet 端口测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20583686/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com