Windows PowerShell 防火墙管理

1. 流程图总览 graph TD A[NetFirewallRule] --> B[新建规则] A --> C[查询规则] A --> D[修改规则] A --> E[删除规则] A --> F[启用/禁用规则] B --> B1(New-NetFirewallRule) C --> C1(Get-NetFirewallRule) D --> D1(Set-NetFirewallRule) E --> E1(Remove-NetFirewallRule) F --> F1(Enable/Disable-NetFirewallRule) C1 --> C2[筛选规则] C2 --> C3[按DisplayName/Protocol/Port] C2 --> C4[按Action/Direction] B1 --> B2[参数设置] B2 --> B3[-DisplayName/-Program/-Port/-Action等] 2. 核心命令详解 (1) 新建规则 (New-NetFirewallRule) New-NetFirewallRule -DisplayName "Block App" -Direction Outbound -Program "C:\app.exe" -Action Block 参数: -Direction:Inbound(入站)或 Outbound(出站) -Action:Allow(允许)或 Block(阻止) -Profile:Domain/Private/Public/Any(网络类型) (2) 查询规则 (Get-NetFirewallRule) Get-NetFirewallRule | Where-Object { $_.DisplayName -like "*HTTP*" } | Format-Table 常用过滤条件: ...

2 min · 238 words

取消代理

在 Windows 系统中取消代理设置的步骤如下(覆盖多种常见场景): 方法 1:通过系统设置关闭全局代理 打开系统设置: 按下 Win + I 打开「设置」。 选择「网络和 Internet」 → 「代理」。 禁用手动代理配置: 在「手动代理设置」部分: ✅ 确保关闭「使用代理服务器」选项 → 点击「保存」。 清除自动配置脚本(如有): 在「自动代理设置」部分: ❗ 删除「自动配置脚本」的 URL(如果之前设置了) → 点击「保存」。 方法 2:通过控制面板重置 IE 代理(传统设置) 某些旧版程序仍依赖 IE 代理配置,可彻底清理: 搜索打开「Internet 选项」: 按 Win + S,输入 Internet 选项 → 选择「控制面板」下的结果。 取消代理: 进入「连接」标签页 → 点击「局域网设置」。 取消勾选以下两项: ✅ 自动检测设置 ✅ 为 LAN 使用代理服务器 点击「确定」保存后重启电脑生效。 方法 3:命令行快速清除代理 通过管理员权限的 PowerShell 或 CMD 强制清理: # 禁用用户级代理 netsh winhttp reset proxy # 清除系统代理注册表项 reg delete "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyServer /f reg delete "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable /f 方法 4:取消应用程序独立代理 部分软件(如 Chrome、Telegram)可能有独立代理设置,需单独关闭: ...

1 min · 163 words

深入解析 Linux 中的 TTY 设备文件

深入解析 Linux 中的 TTY 设备文件:配置与调试技巧 对于资深管理员,/dev 目录下的 TTY 设备文件不仅是终端交互的核心,更是系统调试和管理的利器。以下将深入解析这些设备文件,并结合实际配置和调试技巧,帮助你在复杂环境中高效解决问题。 1. /dev/tty 核心概念:当前进程的控制终端(Controlling Terminal)。 技术细节: 它是一个虚拟设备,指向当前进程关联的终端。 对于交互式 Shell,/dev/tty 指向用户正在使用的终端。 对于后台任务,/dev/tty 可能无效。 典型用途: 将输出定向到当前终端:echo "Hello" > /dev/tty。 在脚本中判断是否运行在终端环境:[ -t 0 ]。 配置与调试技巧: 使用 stty 动态调整终端设置:stty -a 查看当前设置,stty sane 恢复默认设置。 在多任务环境中,通过 /dev/tty 确保输出不会被重定向。 2. /dev/tty0 核心概念:当前活动的虚拟控制台(Virtual Console)。 技术细节: 指向当前正在使用的虚拟控制台。 只有 root 用户或具有 CAP_SYS_ADMIN 权限的进程可以写入 /dev/tty0。 典型用途: 在内核调试中,将日志输出到控制台。 在系统启动时,/dev/console 可能被重定向到 /dev/tty0。 配置与调试技巧: 通过内核参数指定默认控制台:console=tty0。 使用 dmesg 查看内核日志时,确保日志输出到正确的控制台。 动态切换虚拟控制台:chvt 2(切换到 tty2)。 3. /dev/ttyX(X 为 1 到 63) 核心概念:虚拟终端(Virtual Terminal)设备。 技术细节: 每个 /dev/ttyX 对应一个虚拟终端。 默认启用 6 个虚拟终端(tty1 到 tty6),可扩展到 63 个。 典型用途: 多用户环境中,为每个用户分配独立的虚拟终端。 配置与调试技巧: 配置内核参数调整虚拟终端数量:vga=extended。 使用 openvt 启动程序到指定虚拟终端:openvt -s 3 /bin/bash。 4. /dev/ttySX(串行端口) 核心概念:串行端口终端(Serial Port Terminal)。 技术细节: 每个 /dev/ttySX 对应一个物理串行端口。 典型用途: 连接外部设备(如调制解调器、嵌入式设备)。 配置与调试技巧: 使用 stty 配置波特率:stty -F /dev/ttyS0 115200。 使用 screen 或 minicom 管理串口通信:screen /dev/ttyS0 115200。 配置内核参数将控制台定向到串口:console=ttyS0,115200。 5. /dev/ttyUSBX 和 /dev/ttyACMX 核心概念:USB 串行设备(USB Serial Device)。 技术细节: /dev/ttyUSBX 对应 USB 转串口设备。 /dev/ttyACMX 对应 USB CDC ACM 设备。 典型用途: 连接嵌入式设备进行调试。 配置与调试技巧: 通过 udev 规则为设备分配固定名称: SUBSYSTEM=="tty", ATTRS{idVendor}=="1234", ATTRS{idProduct}=="5678", SYMLINK+="mydevice" 配置权限以允许普通用户访问设备:chmod 666 /dev/ttyUSB0。 6. /dev/pts/* 核心概念:伪终端(Pseudo Terminal)。 技术细节: 每个 /dev/pts/X 对应一个伪终端,由 PTY 子系统管理。 典型用途: 远程访问时,为每个 SSH 会话分配伪终端。 配置与调试技巧: 使用 ptsname 和 grantpt 管理伪终端。 通过 TIOCSTI 或 TIOCLINUX 进行终端注入。 检查伪终端会话:w 或 who。 7. /dev/console 核心概念:系统控制台(System Console)。 技术细节: console 设备指向系统的控制台。 典型用途: 系统启动时查看内核输出。 配置与调试技巧: 配置多控制台:console=tty0 console=ttyS0。 使用 dmesg 动态查看和控制内核日志。 8. /dev/null 核心概念:黑洞设备(Null Device)。 技术细节: 写入 /dev/null 的数据被丢弃,读取时返回 EOF。 典型用途: 丢弃不需要的输出。 配置与调试技巧: 在脚本中丢弃输出:command > /dev/null 2>&1。 手动创建 /dev/null:mknod /dev/null c 1 3。

2 min · 217 words

获取epub目录

import xml.etree.ElementTree as ET def parse_epub_toc(toc_file): """解析 EPUB 的 toc.ncx 文件""" try: tree = ET.parse(toc_file) root = tree.getroot() # 定义命名空间 ns = {'ncx': 'http://www.daisy.org/z3986/2005/ncx/'} # 获取书籍标题 doc_title = root.find('.//ncx:docTitle/ncx:text', ns) book_title = doc_title.text if doc_title is not None else "未知标题" # 获取所有 navPoint 元素 #nav_points = root.findall('.//ncx:navPoint', ns) nav_points = root.findall('./ncx:navMap/ncx:navPoint', ns) print(len(nav_points)) return book_title, nav_points, ns except Exception as e: print(f"解析文件出错: {e}") return None, None, None def build_toc_tree(nav_points, ns): """构建目录树结构""" toc = [] for nav_point in nav_points: # 获取章节信息 nav_label = nav_point.find('ncx:navLabel/ncx:text', ns) content = nav_point.find('ncx:content', ns) if nav_label is not None and content is not None: chapter = { 'id': nav_point.get('id', ''), 'play_order': nav_point.get('playOrder', ''), 'title': nav_label.text, 'src': content.get('src', ''), 'children': [] } # 递归处理子章节 sub_nav_points = nav_point.findall('ncx:navPoint', ns) if sub_nav_points: sub=True chapter['children'] = build_toc_tree(sub_nav_points, ns) toc.append(chapter) return toc def print_tree(toc, prefix='', is_last=True): """打印树形目录结构""" for i, chapter in enumerate(toc): # 当前节点连接符 #connector = '└── ' if (i == len(toc) - 1 and is_last) else '├── ' connector = ' ' if (i == len(toc) - 1 and is_last) else ' ' # 打印当前节点 print(prefix + connector + chapter['title']) # 准备子节点前缀 # new_prefix = prefix + (' ' if (i == len(toc) - 1 and is_last) else '│ ') new_prefix = prefix + (' ' if (i == len(toc) - 1 and is_last) else ' ') # 递归打印子节点 if chapter['children']: print_tree(chapter['children'], new_prefix , is_last and i == len(toc) - 2) #print(is_last,i,len(toc) - 1) def main(): # 输入文件路径 toc_file = 'toc.ncx' # 解析文件 book_title, nav_points, ns = parse_epub_toc(toc_file) if not book_title: return print(f"书籍标题: {book_title}\n") print("目录结构:") # 构建目录树 toc_tree = build_toc_tree(nav_points, ns) # 打印树形结构 print_tree(toc_tree) if __name__ == "__main__": main()

2 min · 269 words

设置代理

是的,Rustup 可以通过代理服务器进行网络连接,以下是设置方法及注意事项: 一、通过环境变量设置代理 大多数命令行工具(包括 rustup)会自动识别系统代理的环境变量,按需设置以下变量: 通用代理设置 # HTTP 代理 export http_proxy="http://代理服务器IP:端口" export HTTP_PROXY="$http_proxy" # HTTPS 代理 export https_proxy="http://代理服务器IP:端口" # 注意此处协议可能根据代理类型调整 export HTTPS_PROXY="$https_proxy" # 全局代理(部分工具识别) export ALL_PROXY="$http_proxy" 示例 # 假设代理地址为 127.0.0.1:7890 export http_proxy="http://127.0.0.1:7890" export https_proxy="http://127.0.0.1:7890" 二、针对 SOCKS5 代理 若使用 SOCKS5 协议(如 Shadowsocks/V2Ray),需通过工具(如 proxychains)转换或直接支持 SOCKS 的客户端: 方法 1:使用 proxychains (Linux/macOS) # 安装 proxychains sudo apt install proxychains # Debian/Ubuntu brew install proxychains-ng # macOS # 修改配置文件 /etc/proxychains.conf socks5 127.0.0.1 1080 # 按需填写 SOCKS5 代理地址 # 通过 proxychains 运行 rustup proxychains rustup update 方法 2:设置 https_proxy 为 SOCKS 地址(部分工具支持) export https_proxy="socks5://127.0.0.1:1080" 三、Windows 系统设置代理 方法 1:PowerShell 临时环境变量 # 设置环境变量 $env:HTTP_PROXY = "http://127.0.0.1:7890" $env:HTTPS_PROXY = "http://127.0.0.1:7890" # 验证 rustup rustup update 方法 2:通过系统设置全局代理 打开 设置 → 网络和 Internet → 代理。 在 手动代理设置 中填写地址和端口。 重启命令行工具生效。 四、验证代理生效 1. 检查下载速度 运行以下命令观察是否通过代理加速: ...

1 min · 176 words