监听并自添加WINDOWS防火墙规则批处理FOR WIN10第二版

第一版见:https://blog.youkuaiyun.com/humors221/article/details/104024524?utm_source=app
更新内容:
加入IP地址归属地

目标:实现获取连接信息并禁用B类以上及特殊类TCP和自动添加防火墙规则
说明:
1.本实例根据目标做成,内容可以按照自己的要求修改,可修改的地方如下:
1)添加排除的外部地址在if not “!addr!”==“0.0.0.0” (内容)右括号在括号最多的地方加
2)修改IP类在if !ipStart! equ 10这类的地方修改,if的用法在命令行使用if /?查看
3)netstat -ano这个查看命令也可以改,改过之后查看的结果解析方式可能会有不同
4)netstat -ano的结果还有其他参数可用,比如本地地址,状态等等,1,2,3,4,5分别表示每一列,具体参考命令行中for /?使用
5)ping -n 60 127.0>nul这个是间隔一段时间再循环,可以修改60间隔
6)可以把批处理加到自定义服务中,具体方法可以参考我的文章:创建windows自定义服务 https://blog.youkuaiyun.com/humors221/article/details/104388571
2.使用方法:
1)启用Windows Defender Firewall服务(右键开始菜单\计算机管理\服务和应用程序\服务\启动类型自动\启动\确定),我这里默认启用无法修改
2)显示文件类型(此电脑双击或任务栏资源管理器双击\菜单栏查看\勾选文件扩展名)
3)创建批处理文件(d:\防火墙规则程序\防火墙规则程序.bat\右键编辑\复制粘贴源代码\保存退出)
4)运行批处理(右键批处理选择以管理员运行)
5)查看和修改防火墙规则(任务栏右键\搜索\显示搜索框\输入防火墙和网络保护\高级设置\入站规则&出站规则)
6)删除所有TCP规则命令行命令:netsh advfirewall firewall delete rule name=all protocol=tcp,详情使用netsh advfirewall firewall /?查询
3.参考:ip地址分类(A类,B类,C类,D类,E类):https://www.cnblogs.com/tunian/p/9632893.html

@echo off
setlocal enabledelayedexpansion
cd /d %~dp0
goto loop 
:loop
set isCClass=false
set num=0
netstat -aon>net.txt
for /f "tokens=*" %%i in (net.txt) do (
set row=%%i
if !num! gtr 1 (
for /f "tokens=1,2,3,4,5* delims= " %%a in ("!row!") do (
set flag=%%a
if "!flag!" equ "TCP" (
set fadd=%%c
for /f "tokens=1,2* delims=:" %%m in ("!fadd!") do (
set addr=%%m
set port=%%n
if not "!addr!"=="209.17.4.8" (
if not "!addr!"=="10.0.19.11" (
if not "!addr!"=="172.16.1.1" (
if not "!addr!"=="172.16.1.41" (
if not "!addr!"=="172.16.1.38" (
if not "!addr!"=="0.0.0.0" (
if not "!addr!"=="[" (
if not "!addr!"=="*" (
for /f "tokens=1,2* delims=." %%w in ("!addr!") do (
set ipStart=%%w
if !ipStart! equ 10 (
set isCClass=true
)
if !ipStart! equ 172 (
set isCClass=true
)
if !ipStart! geq 192 (
set isCClass=true
)
if "!isCClass!"=="true" (
call :ipGPS !addr!
del /q ipFind.vbs
del /q ipFind.txt
)
)
)
)
)
)
)
)
)
)
)
)
)
)
set /a num+=1
)
ping -n 60 127.0>nul
goto loop
:ipGPS
set adr=%1
echo Set objXML = CreateObject("MSXML2.ServerXMLHTTP")>ipFind.vbs
echo Set objFSO = CreateObject("Scripting.FileSystemObject")>>ipFind.vbs
echo objXML.open "GET","http://www.cip.cc/!adr!",false>>ipFind.vbs
echo objXML.send()>>ipFind.vbs
echo Set objFile = objFSO.CreateTextFile("ipFind.txt",true)>>ipFind.vbs
echo objFile.close>>ipFind.vbs
echo Set objTextFile = objFSO.OpenTextFile ("ipFind.txt", 8, True)>>ipFind.vbs
echo objTextFile.WriteLine(objXML.responseText)>>ipFind.vbs
echo objTextFile.Close>>ipFind.vbs
start /wait wscript /t:600 ipFind.vbs
set rownumber=0
FOR /F "tokens=1,2* delims=:" %%i in (ipFind.txt) do (
if !rownumber! equ 39 (
echo IP地址:!adr!  位置:%%j 被禁用!
echo.
echo.
netsh advfirewall firewall add rule name=denyIn-!adr! protocol=tcp dir=in action=block remoteip=!adr! remoteport=!port!
netsh advfirewall firewall add rule name=denyOut-!adr! protocol=tcp dir=out action=block remoteip=!adr! remoteport=!port!
echo IP地址:!adr!  位置:%%j>>addr.txt
set /A rownumber=rownumber+1
) else (
set /A rownumber=rownumber+1
)
)

(全文完)

<think>嗯,用户想在Windows系统下设置Streamlit应用的自动启动,且需要指定运行参数,比如--server.address 0.0.0.0和--server.port 6006。我需要先理清楚Windows下自动启动程序的方法有哪些。常见的可能有任务计划程序、启动文件夹或者服务的方式。 首先,启动文件夹可能比较简单,用户可以将一个批处理文件放到启动文件夹里,这样登录时就会运行。但可能的问题是需要用户登录才会触发,如果希望即使不登录也能运行,可能需要用任务计划程序或者服务。 任务计划程序的话,可以设置触发器为系统启动时,这样不需要用户登录。不过可能需要配置正确的权限和操作。服务的方式可能更复杂,需要第三方工具如NSSM来创建服务,但稳定性更好。 然后要考虑如何正确执行streamlit命令。用户需要运行的是streamlit run your_script.py带上参数。这里需要注意路径问题,可能需要用绝对路径来避免出错。比如,如果脚本不在当前目录,或者环境变量没有设置,可能导致命令找不到。所以批处理文件中应该使用全路径,或者先激活虚拟环境。 另外,用户可能希望应用在后台运行,不显示命令行窗口。这时候使用VBScript或者PowerShell脚本可以隐藏窗口,但可能需要更多的步骤。或者使用任务计划程序运行时设置不打开窗口。 还要注意防火墙设置,如果用户需要外部访问,可能需要开放对应的端口,比如6006,这在之前的引用中提到过类似的问题,引用[4]提到端口8080的设置,这里可以类比。 另外,用户提到的参数--server.address 0.0.0.0在引用[1]中有说明,正确使用这个参数可以让其他机器访问应用。同时指定端口6006,可能需要检查该端口是否被占用,或者是否需要配置路由器的端口转发。 总结步骤应该是:创建批处理文件,测试能否正常运行,然后将批处理文件或通过任务计划程序设置自动启动。同时可能需要隐藏窗口,使用VBScript或任务计划程序的设置。此外,提醒用户注意路径、权限和端口配置。</think>以下是在Windows系统下设置Streamlit应用自动启动指定运行参数的完整教程: ### 一、创建启动脚本 1. 新建批处理文件 `start_streamlit.bat` ```bat @echo off cd /d "D:\your_project_path" streamlit run your_script.py --server.address 0.0.0.0 --server.port 6006 ``` (注意替换实际项目路径和脚本名称) 2. 可选隐藏窗口本(使用VBScript): 创建 `start_hidden.vbs` ```vbscript Set WshShell = CreateObject("WScript.Shell") WshShell.Run "cmd /c D:\path\to\start_streamlit.bat", 0 ``` ### 二、设置自动启动方法 #### 方法1:任务计划程序(推荐) 1. 搜索打开"任务计划程序" 2. 创建任务: - 常规:勾选"不管用户是否登录都要运行" - 触发器:新建"启动时" - 操作:启动程序选择`start_streamlit.bat` - 条件:取消所有勾选 - 设置:勾选"如果任务失败,重新启动",间隔5分钟 #### 方法2:启动文件夹 1. 按`Win+R`输入`shell:startup` 2. 将`start_hidden.vbs`复制到此目录 (仅当用户登录时生效) ### 三、验证配置 1. 手动运行批处理文件测试参数有效性 2. 检查防火墙设置,开放TCP 6006端口[^4] 3. 使用`netstat -ano|findstr 6006`验证端口监听状态 ### 四、补充说明 1. Python环境建议使用虚拟环境固定路径[^3] 2. 参数`--server.address 0.0.0.0`确保外网可访问[^1] 3. 后台运行时建议禁用浏览器自动打开: ```bat streamlit run your_script.py --server.address 0.0.0.0 --server.port 6006 --global.disableWatchdogWarning true --browser.gatherUsageStats false ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

humors221

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值