以下是在linux判斷netstat -an是否可以看到3000 port的連線數量,若是0(代表沒有連線),才會寫log。
if [ `netstat -an|grep 30000|wc -l` -eq 0 ]
then
echo "`date "+%Y-%m-%d %H:%M:%S"` 30000 port connection doesn't exist." >>/tmp/test.log
else
echo "Nothing to do"
fi
我在windows中,想透過 batch 達到同樣功能,上網看一下,windows batch一樣有if判斷式,但是卡在算行數的功能,也就是Linux的wc -l,不知道要怎麼達成呢?
chtois wrote:
但是卡在算行數的功能
windows 內建的指令
find /v "" /c < 檔名.副檔名

有輸出結果的指令(執行檔) | find /v "" /c

也可併用findstr,詳細請參考官方說明
https://docs.microsoft.com/zh-tw/windows-server/administration/windows-commands/find
https://docs.microsoft.com/zh-tw/windows-server/administration/windows-commands/findstr
rem for windows (not Linux)
rem 程式碼,請自建一個.bat儲存
@echo off
cls
setlocal EnableDelayedExpansion
set "CheckPort=netstat -a -n|findstr /n /c:"要找的關鍵字放這裡" |find /v /c """
for /f %%c in ('!CheckPort!') do set CountLine=%%c
if %CountLine%==0 (echo %date% %time% Houston, we have a problem...) else (echo OK)
內文搜尋

X