windows批处理批量判断远程端口是否开放的简单粗糙办法

思路:1.把ping不通的排除以节省脚本运行时间,不考虑那些特殊情况

           2.记录telnet命令的执行时间,时间不超过2S的视为连接上,有点简单粗暴但暂时想不出更好的办法

脚本如下,只能用于不严谨的场合:

@echo off&setlocal ENABLEDELAYEDEXPANSION 

for /l %%i in (1,1,255) do  call :step %%i
echo 完毕!
pause


:step

	ping /n 1 223.95.165.%1  || goto :EOF

	
	set _time_start=!time!
	set /a second_start=!_time_start:~6,2!
	set /a minute_start=!_time_start:~3,2!
	set /a hour_start=!_time_start:~0,2!
	set /a second_start=!hour_start!*3600+!minute_start!*60+!second_start!
	echo q|telnet -e 'q' 223.95.165.%1 554

	set _time_end=!time!
	set /a second_end=!_time_end:~6,2!
	set /a minute_end=!_time_end:~3,2!
	set /a hour_end=!_time_end:~0,2!
	if !hour_end! lss !hour_start! ( set /a hour_end=!hour_end!+24 )
	set /a second_end=!hour_end!*3600+!minute_end!*60+!second_end! 
	
	set /a time_spent=!second_end! - !second_start!
	if  !time_spent! leq 2 ( echo 223.95.165.%1 554>>C:/result.txt) 	
	

补充一种更严谨的办法,使用第三方命令nmap,并把下载好的nmap目录加入系统环境path中以便cmd识别此命令

命令行包下载地址:https://nmap.org/download.html

脚本简单多了,如下:

@echo off&setlocal ENABLEDELAYEDEXPANSION 

for /l %%i in (1,1,255) do  call :step %%i
echo 完毕!
pause


:step
	nmap -sT -p 554  223.151.22.%1|findstr "open"&&echo 223.151.22.%1 554 port is open>>C:/result.txt||echo 223.151.22.%1 554 port is not open
	
	

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值