簡體   English   中英

如何批量檢查存儲在變量中的字符串是否與netstat -nao的IP地址相同

[英]How to check if a string stored in a variable is the same as an ip address from netstat -nao in batch

這是我第一次問一個問題,所以不要對我加倍努力。

我正在參加一個小捕獲flag事件的競賽,並且正在編寫一些簡單的批處理腳本以提供一些幫助。

該程序的目的是檢查netstat -nao輸出是否在dontkill變量中。 如果是的話,請不要殺死它。 如果不是,則查找進程ID並終止連接。 dontkill將包含我的IP地址,這樣它就不會dontkill我與計算機的遠程連接。

看起來很簡單,但是我遇到了很大的麻煩,因為我不知道如何很好地批量編寫。

到目前為止,這是我的代碼:

for /L %%i in (1,0,) do @for /f "tokens=5" %%j in ('netstat -nao ^| findstr ^"ESTABLISHED^"' ) do @taskkill /f /PID %%j

這會繼續進行,查找所有已建立的連接,並在無限循環中終止它們。 我已經嘗試過此命令的許多不同變體,並且我認識到我在第二個do中需要某種if/else語句來檢查dontkill是否與循環中變量%%a中存儲的內容相同:

for /f "tokens=3" %%a in('"netstat -nao^|findstr ^"ESTABLISHED^"')

我知道這在其他腳本語言中可能會更容易些,但必須是批處理的,因為我將在其上使用的計算機將是全新安裝的Windows XP,Server 2003、2008和Win7。

好的,在變量a的正上方的for循環中,像這樣輸出“ 192.168.1.230:1003”,因此它具有ip地址和以冒號分隔的端口。

我需要能夠將其與僅具有IP地址的變量dontkill進行比較。

有什么方法可以擺脫:1003,以便我可以將其與變量dontkill進行比較。

我一直在弄亂諸如

SET line="192.168.1.241:10256"
SET string3=%line::[0-9]*=%

但這不起作用。

為了清楚起見,我正在嘗試從“ 192.168.1.241:10256”轉到“ 192.168.1.241”,以便我可以將最終結果與dontkill進行比較並決定要做什么。

我在這里先向您的幫助表示感謝。

須藤代碼///////////////////////////////////////////////// ///////////////// DONTKILL =“ 192.168.1.241”

FOR(在第3列和第5列中按FINDSTR。FINDSTR篩選的過程數)

VAR A IS THE COLUMN 3 INFO which is some ip address with port "192.168.1.241:1003"

VAR B IS THE COLUMN 5 INFO which is PID "1524"

IF(DONTKILL == A)

    DONTKILL THAT PROCESS
ELSE
    KILL THAT PROCESS USING 
    TASKKILL /F /PID B

我從http://blog.commandlinekungfu.com/2010/01/episode-76-say-hello-to-my-little.html獲得了這種方法的靈感

像這樣 :

@echo off&cls
setlocal EnableDelayedExpansion

set "DONTKILL=127.0.0.1"

for /f "tokens=1-5 delims= " %%a in ('netstat -nao ^| find /i "ESTABLISHED"' ) do (
echo [%%a] [%%b] [%%c] [%%d] [%%e]
call:GetIP %%c

if !$IP!==%DONTKILL% (
echo IP !$IP! IS EQUAL TO DONTKILL [%DONTKILL%] 
echo.
) else (
echo IP !$IP! IS NOT EQUAL TO DONTKILL [%DONTKILL%]
echo.
)
)
exit/b

:GetIP
for /f "tokens=1 delims=:" %%a in ('echo %1') do (
set "$IP=%%a"
goto:eof)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM