天天看点

Windows下bat脚本判断端口是否可用

环境:

     一台服务器上用了portmap做了端口转发,但是这个程序经常会跪,需要人工去重启

解决思路:

通过bat来监控程序端口,不通时候自动重启,如果端口可用,则会出来telnet进程,若端口不可用,则不会出现telnet进程。根据进程是否存在来判断端口是否可用,因为telnet通的话,会直接跳转窗口,无回显,所以需要telnet时候启用新窗口。

方法二

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

<code>@</code><code>echo</code> <code>off</code>

<code>title PortMap存活监控!!!</code>

<code>:again</code>

<code>set</code> <code>ip=127.0.0.1</code>

<code>set</code> <code>port=8080</code>

<code>start telnet.exe %ip% %port%</code>

<code>ping</code> <code>-7 127.0.0.1 &gt; null</code>

<code>tasklist|findstr </code><code>/i</code> <code>"telnet.exe"</code> <code>&gt; nul</code>

<code>if</code> <code>ERRORLEVEL 1 (goto err) </code><code>else</code> <code>(goto ok)</code>

<code>:err</code>

<code>tasklist|findstr -i </code><code>"portmap.exe"</code>

<code>if</code> <code>ERRORLEVEL 1 (start </code><code>""</code> <code>"D:\PortMap1.6\PortMap.exe"</code><code>) </code><code>else</code> <code>(taskkill </code><code>/F</code> <code>-IM PortMap.exe &amp; start </code><code>""</code> <code>"D:\PortMap1.6\PortMap.exe"</code><code>)</code>

<code>:ok</code>

<code>taskkill </code><code>/F</code> <code>-IM </code><code>"telnet.exe"</code> <code>&gt;&gt; nul</code>

<code>echo</code> <code>PortMap Services is running %Date:~0,4%-%Date:~5,2%-%Date:~8,2% %Time:~0,2%:%Time:~3,2%</code>

<code>ping</code> <code>-n 300 127.0.0.1 &gt;nul</code>

<code>goto again</code>

<code>netstat</code> <code>-ano|findstr %ip%:%port%|findstr -i ESTABLISHED</code>

本文转自 justin_peng 51CTO博客,原文链接:http://blog.51cto.com/ityunwei2017/1924966,如需转载请自行联系原作者

继续阅读