微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用批处理脚本在Windows 7上自动执行Telnet端口testing

我正在使用Windows 7 x64。 使用bat脚本,我需要检查是否能够使用telnet连接到服务器上的某些特定端口。 如果连接成功,服务器将显示一个菜单,或者显示如下信息:Connecting To xxxxx …无法打开与主机的连接,端口xxxxx:连接失败。

对于我的目的,服务器有几个端口进行testing,我不想通过login或导航菜单复杂的事情。 我只想要一个简单的输出,指出连接是否成功。 检查退出状态不起作用。 我不想使用Visual Basic。 任何想法如何使用蝙蝠脚本检查连接状态? 目前我检查视觉,我使用下面的脚本来打开连接

@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:WindowsSystem32telnet.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窗口,每个窗口都有成功login的菜单

如何在telnet客户端上实现命令历史logging? (上/下箭头)

Windows上的脚本Trac安装

如何脚本login和注销Windows XP中

定期自动下载Cacti Weathermap

我无法通过命令行连接并上传到FTP

使用python自动化firefox?

如何findWindows上的原生android应用程序的元素,因为Windows Appium检查器不起作用?

文件中逐行searchstring

batch file来更改计算机上的所有networking共享

在Linux中自动安装二进制文件

这是一个耻辱,你不能使用netcat – 所有的开源选项,如它在你的环境中禁止

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

以下是一个PS脚本示例,它将尝试连接到$ remoteHost上的端口23,并在成功时退出0,失败时返回1。 (如果连接后需要做更多的工作,可以在Web上使用更复杂的PowerShell远程登录客户端的一些例子,比如这个 。)

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

请注意,您可能需要修改PowerShell脚本执行策略(或使用“-ExecutionPolicy Bypass”cmdline选项 )以允许执行脚本 – 有关更多信息,请参阅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

你可以使用netcat ,会话日志:

C:UsersUser>nc -v -t stackoverflow.com 23 stackoverflow.com [198.252.206.16] 23 (telnet): TIMEDOUT C:UsersUser>echo %errorlevel% 1 C:UsersUser>nc -v -t stackoverflow.com 25 stackoverflow.com [198.252.206.16] 25 (smtp) open 220 SMTP Relay SMTP 421 SMTP Relay SMTP session timeout. Closing connection C:UsersUser>echo %errorlevel% 0

Checking for exit status didn't work.是什么意思Checking for exit status didn't work. ?

如果你把你的退出码打印出来,那么在执行之前,响应将会是在解析FOR循环时ERRORLEVEL将成为errorlevel的值。

在每次调用telnet时都要显示这个值

... "C:WindowsSystem32telnet.exe" %host_name% !mwa_port%%i! echo Exit Code is !errorlevel!

where !errorlevel! 是errorlevel的运行时间值。

很有可能你想要禁止telnet输出,所以>nul和/或2>nul可能会被有效地连接以使其静音。 可能你需要提供一个响应telnet – 不是我的区域…

现在 – 如果errorlevel没有返回一个可用的值,是否有任何telnet响应可以观察到区分你感兴趣的状态?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐