我要做一个批处理文件,用来判断330端口是否在运行的语句。
我的想法是:
先设置一个变量值为i=0
telnet 192.168.1.200 330
1.进去后,改写i=1,然后退出,说明端口运行正常。自动返回到dos下。
2.进去不了,i的值不变,自动返回到dos下。
检查变量i的值,
1.如果i=1,结束批处理文件。
2.如果i=0,执行该程序重启的命令。(重启命令:E:\server\Server.exe /startup 此命令直接在cmd中手动执行是生效的。)
我的目的是:
该程序使用了330端口并开放330端口,而突然之间该程序出现问题,原本开放的端口330自动关闭,就是检测一下该程序的330端口是否关闭了,如果关闭了,则自动重启此程序!
我需要做的:
我用telnet命令来做一个检查,目前我写的程序达不到效果,所以请各位高手帮忙!
下面是我写的
bat:- @echo off
- echo 正在检查服务,请稍等......
- set i=0
- start telnet
- cscript telnet_tmp.vbs
- if %i% == 1 goto :close
- if %i% == 0 goto :open
- goto :exit
-
- :open
- E:\server\Server.exe /startup
- goto :exit
-
- :close
- goto :exit
-
- :exit
- echo 完成!
- echo. & pause
复制代码 telnet_tmp.vbs- set sh=WScript.CreateObject("WScript.Shell")
- WScript.Sleep 300
- sh.SendKeys "open 192.168.1.200 330"
- WScript.Sleep 300
- sh.SendKeys "{ENTER}"
- WScript.Sleep 600
- sh.SendKeys "{ENTER}"
- WScript.Sleep 300
- sh.SendKeys "quit {ENTER}"
- WScript.Sleep 300
- sh.SendKeys "{ENTER}"
- WScript.Sleep 300
- sh.SendKeys "quit {ENTER}"
- WScript.Sleep 600
- set i=1
复制代码 现在的问题是:
1.telnet无法返回i的值,也就无法做到后面的判断
2.telnet退出后无法返回cmd界面,运行后面的代码
请高手指教!
周末不上班,没有及时来查看,感谢大家帮助,对大家的回答没有及时回复感到有点不太尊重,真的很抱歉!
周末在家上不了网,研究了一下,发现不用这么麻烦,具体如下:-
- netstat -an |find "330" >>netstat.txt
- find "0.0.0.0:330" netstat.txt
- if %errorlevel% ==1 ( goto :open) else (goto :close )
- :open
- E:\server\Server.exe /startup
- goto :exit
- :close
- goto :exit
- :exit
- echo 完成!
- echo. & pause
复制代码 原有问题解决了,现在问题完成一半了,又有新问题出现了:
在执行server /startup 时,总是跳出完成的确认提示框!我用此批处理10分钟运行一次,一个星期关机一次,那不是一天最多可以达到100多次的确认框停留在电脑上吗?有高手能帮我解决一下吗?
[ 本帖最后由 aishangwangluo 于 2011-1-17 09:01 编辑 ] |