中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [原创]切断本机与指定ip的连接,可以自动搜索当前连接.
作者:
标题: [原创]切断本机与指定ip的连接,可以自动搜索当前连接. 上一主题 | 下一主题
sonicandy
中级用户





积分 273
发帖 91
注册 2007-5-7
状态 离线
『楼 主』:  [原创]切断本机与指定ip的连接,可以自动搜索当前连接.


@echo off && setlocal enabledelayedexpansion
call :getip
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::说明: 现在有好多恶意网站,浏览这种站点后会自动下载很多病毒
::      这个时候最好是马上将这个站点屏蔽掉,然后进行病毒查杀
::      通过本批处理就可以迅速实现这个操作.
::      作者: sonic_andy

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::显示菜单
:ag
cls
echo 1.输入要屏蔽的IP
echo.
echo 2.恢复被屏蔽的IP
echo.
echo 3.显示屏蔽列表
echo.
echo 4.退出批处理程序
echo.
set /p ch=请选择:
cls
if "%ch%"=="1" call :block
if "%ch%"=="2" call :unblock
if "%ch%"=="3" call :print
if "%ch%"=="4" exit
goto :ag

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::屏蔽指定的IP/当前连接中的所有IP
:block
set /p site=请输入屏蔽的地址(0为添加当前连接的所有IP):
echo 处理中,请稍候...
if "!site!"=="0" (
    @for /f "tokens=4 skip=4 delims=: " %%i in ('netstat -n') do (
        call :add %%i
    )
) else (
    echo !site! | findstr [0-9]*.[0-9]*.[0-9]*.[0-9]* >nul
    if !errorlevel!==1 (
        for /f "tokens=2 delims=[]" %%i in ('ping -n 1 -w 1 !site!') do (
            set site=%%i
        )
        echo !site! | findstr [0-9]*.[0-9]*.[0-9]*.[0-9]* >nul
        if !errorlevel!==1 exit /b
    )
    call :add !site!
)
pause
exit /b

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::解除被屏蔽的IP地址
:unblock
set /p site=请输入需要恢复的IP(0为恢复所有IP):
echo 处理中,请稍候...
if "!site!"=="0" (
    @for /f "tokens=1,3 delims= " %%i in ('route print') do (
        if "%%j"=="!ip!" (
            route delete %%i 1>nul 2>nul
            echo 已恢复%%i
        )
    )
    pause
    exit /b
) else (
    @for /f "tokens=1,3 delims= " %%i in ('route print') do (
        if "%%j"=="!ip!" (
            if "%%i"=="!site!" (
                route delete %%i 1>nul 2>nul
                echo 已恢复%%i
                exit /b
            )
        )
    )
    echo 未找到!site!
    pause
    exit /b
)

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::显示所有被屏蔽的IP
:print
echo [被屏蔽的IP列表]
@for /f "tokens=1,3 delims= " %%i in ('route print') do (
    if "%%j"=="!ip!" echo %%i
)
pause
exit /b

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::添加IP或域名(%1)到路由表,将被映射到!ip!以屏蔽
:add
set site=%1
if "!site!"=="127.0.0.1" exit /b
@for /f "tokens=1,3 delims= " %%i in ('route print') do (
    if "%%j"=="!ip!" (
        if "%%i"=="!site!" exit /b
    )
)
echo 正在屏蔽!site!
route add !site! !ip! if 2
exit /b

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::得到本机ip将最后一位转换为0,然后作为路由表映射
:getip
for /f %%i in ('hostname') do set host=%%i
for /f "tokens=2 delims=[]" %%i in ('ping -n 1 -w 1 !host!') do set ip=%%i
for /f "tokens=1,2,3 delims=." %%i in ('echo !ip!') do set ip=%%i.%%j.%%k.0
exit /b


2007-9-12 20:36
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ThinKing
中级用户





积分 471
发帖 207
注册 2007-5-3
状态 离线
『第 2 楼』:  

不错,沙发~~

2007-9-12 20:52
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: