修改博文

This commit is contained in:
2025-08-15 22:06:27 +08:00
parent 27f6687802
commit 5aec62fa76
35 changed files with 1583 additions and 1363 deletions

View File

@@ -103,7 +103,10 @@ export default defineAppConfig({
}, },
codeIcon: { codeIcon: {
terminal: 'i-lucide-terminal', terminal: 'i-lucide-terminal',
code: 'vscode-icons:file-type-codekit' code: 'vscode-icons:file-type-codekit',
kali: 'i-devicon:kalilinux',
bash: 'i-devicon:powershell',
debian: 'i-devicon:debian'
}, },
codeCollapse: { codeCollapse: {
slots: { slots: {

View File

@@ -1,7 +1,7 @@
<script setup lang="ts"> <script setup lang="ts">
// 定义组件参数类型 // 定义组件参数类型
interface Props { interface Props {
perPage?: number // 每页显示的文章数,默认 12 perPage?: number // 每页显示的文章数,默认 12
maxPages?: number // 最大页数,默认 15 maxPages?: number // 最大页数,默认 15
} }
@@ -15,7 +15,7 @@ const props = withDefaults(defineProps<Props>(), {
const currentPage = ref(1) const currentPage = ref(1)
// 获取所有博客文章 // 获取所有博客文章
const { data: allArticles, pending } = await useAsyncData('blog-all-articles', () => { const { data: allArticles } = await useAsyncData('blog-all-articles', () => {
return queryCollection('blog') return queryCollection('blog')
.select('path', 'title', 'description', 'img', 'date') .select('path', 'title', 'description', 'img', 'date')
.where('path', 'NOT LIKE', '%navigation%') .where('path', 'NOT LIKE', '%navigation%')
@@ -25,13 +25,13 @@ const { data: allArticles, pending } = await useAsyncData('blog-all-articles', (
// 按时间排序的文章列表 // 按时间排序的文章列表
const sortedArticles = computed(() => { const sortedArticles = computed(() => {
if (!allArticles.value) return [] if (!allArticles.value) return []
return [...allArticles.value].sort((a, b) => { return [...allArticles.value].sort((a, b) => {
// 如果没有日期,排在最后 // 如果没有日期,排在最后
if (!a.date && !b.date) return 0 if (!a.date && !b.date) return 0
if (!a.date) return 1 if (!a.date) return 1
if (!b.date) return -1 if (!b.date) return -1
// 按日期降序排列(最新的在前面) // 按日期降序排列(最新的在前面)
const dateA = new Date(a.date) const dateA = new Date(a.date)
const dateB = new Date(b.date) const dateB = new Date(b.date)
@@ -49,10 +49,10 @@ const totalPages = computed(() => {
// 计算当前页显示的文章 // 计算当前页显示的文章
const paginatedArticles = computed(() => { const paginatedArticles = computed(() => {
if (!sortedArticles.value) return [] if (!sortedArticles.value) return []
const startIndex = (currentPage.value - 1) * props.perPage const startIndex = (currentPage.value - 1) * props.perPage
const endIndex = startIndex + props.perPage const endIndex = startIndex + props.perPage
return sortedArticles.value.slice(startIndex, endIndex) return sortedArticles.value.slice(startIndex, endIndex)
}) })
@@ -81,7 +81,7 @@ const getCategoryFromPath = (path: string) => {
// 转换文章数据为 UBlogPosts 需要的格式 // 转换文章数据为 UBlogPosts 需要的格式
const blogPosts = computed(() => { const blogPosts = computed(() => {
if (!paginatedArticles.value) return [] if (!paginatedArticles.value) return []
return paginatedArticles.value.map(article => ({ return paginatedArticles.value.map(article => ({
title: article.title || '未命名文章', title: article.title || '未命名文章',
description: article.description || '', description: article.description || '',
@@ -119,9 +119,12 @@ watch(sortedArticles, () => {
<!-- 有文章时显示内容 --> <!-- 有文章时显示内容 -->
<div v-if="sortedArticles && sortedArticles.length > 0"> <div v-if="sortedArticles && sortedArticles.length > 0">
<div class=""> <div class="">
<UBlogPosts orientation="vertical" :posts="blogPosts" /> <UBlogPosts
orientation="vertical"
:posts="blogPosts"
/>
</div> </div>
<!-- 分页控件 --> <!-- 分页控件 -->
<div class="flex justify-center pt-8 border-t border-gray-200 dark:border-gray-700"> <div class="flex justify-center pt-8 border-t border-gray-200 dark:border-gray-700">
<div class="pt-6"> <div class="pt-6">
@@ -143,4 +146,3 @@ watch(sortedArticles, () => {
</div> </div>
</div> </div>
</template> </template>

View File

@@ -1,3 +1,3 @@
title: 技术栈 title: 技术栈
description: 记录日常开发中遇到的技术问题和解决方案 description: 记录日常开发中遇到的技术问题和解决方案
icon: lucide-code icon: devicon:prolog

View File

@@ -0,0 +1,293 @@
---
title: 防于未然,先固不破 — Debian 12 快速加固实战
description: 在数字化浪潮席卷全球的今天,服务器已成为承载企业核心业务与数据的“心脏”。一旦这颗心脏被攻破,轻则业务中断,重则数据泄漏、引发监管问责、品牌声誉坍塌,甚至于法律诉讼。
date: 2025-08-15
img: https://lijue-me.oss-cn-chengdu.aliyuncs.com/20250815215319708.png
navigation:
icon: simple-icons:debian
---
### 前言
在数字化浪潮席卷全球的今天,服务器已成为承载企业核心业务与数据的“心脏”。一旦这颗心脏被攻破,轻则业务中断,重则数据泄漏、引发监管问责、品牌声誉坍塌,甚至于法律诉讼。也正因如此,“我不知道漏洞藏在那里”已经不是借口,而是失责;真正负责任的运维与安全团队,必须把“ **防于未然,先固不破** ”当作铁律。
然而,系统配置千头万绪——从 BIOS 到内核参数,从系统服务到用户策略,从网络栈到文件权限——**千里之堤,溃于蚁穴**,任何一个角落的配置失误,都可能成为攻击者趁虚而入的跳板。“人眼”已无法在短时间内遍历所有细节,唯有借助安全团队丰富的经验与标准化的自动安全审计工具,将复杂环境拆解成可度量的检查项,才能在海量主机、混部容器与虚拟化场景中抽丝剥茧,还原安全真相。
本文将以 **Lynis** 审计工具来还原一次服务器加固实战。
### 正文
#### 什么是Lynis?
Lynis 是一款开源、针对基于 UNIX 系统(如 Linux、macOS、BSD 等的安全审计工具。它能检测系统配置、文件权限、日志、网络等多个方面提供详细的安全建议帮助系统管理员加强系统的安全性。Lynis 通常被系统管理员和网络安全工程师用来评估其系统的安全防御能力。
- 除了“蓝队”之外,如今的渗透测试人员也将 Lynis 作为他们的工具之一。
#### 环境
- **OS**Debian 12 (bookworm) 全新 Server 最小化安装
- **内核**6.1.0-12-amd64Debian 12 官方 6.1 LTS 最新版)
- **架构**x86_64
- **软件源** :启用 Debian Security 及官方主仓库
- **用户**root 初始登录,已创建 sudo 普通用户 `estel`,后续所有操作便于演示均以 su - 模式执行
- **时间**NTP 已启用,与 `pool.ntp.org` 同步,时区 UTC+8
- **防火墙**iptables 未配置(默认空规则)
- **已更新**`apt update && apt full-upgrade -y` 三天前更新
- **已安装包** Docker nfs-server openssh-server
#### 使用
```bash[bash]
# ssh 连接进服务器
# 在合适的目录进行克隆 Lynis
git clone https://github.com/CISOfy/lynis
#执行安全审查脚本
cd lynis && sudo ./lynis audit system
```
#### 扫描结果部分摘录
```bash[bash]
**[ Lynis 3.1.6 ]**
**Lynis security scan details**:
**Scan mode**:
Normal [▆]  Forensics [ ]  Integration [ ]  Pentest [ ]
**Lynis modules**:
- Compliance status      [**?**]
- Security audit         [**V**]
- Vulnerability scan     [**V**]
**Details**:
Hardening index : **63** [**############**        ]
Tests performed : **280**
Plugins enabled : **2**
**Software components**:
- Firewall               [**V**]
- Intrusion software     [**X**]
- Malware scanner        [**X**]
**Files**:
- Test and debug information      : **/var/log/lynis.log**
- Report data                     : **/var/log/lynis-report.dat**
==============================================================
**Lynis** 3.1.6
Auditing, system hardening, and compliance for UNIX-based systems
(Linux, macOS, BSD, and others)
2007-2025, CISOfy - https://cisofy.com/lynis/
**Enterprise support available (compliance, plugins, interface and tools)**
```
#### 结果分析
- 根据 Lynis 的体检单
- Hardening Index 63/100
1. 系统概况
- Debian 12无内核更新无重启需求存在 2 个高风险补丁PKGS-7392
2. 关键问题
- GRUB 无密码 ,可单用户模式提权
- SSH 端口为 22允许 root 登录,多项参数过宽
- 大量 systemd 服务暴露评分 9.xatd、cron、docker、rsyslog 等)
- 未挂载 /var /tmp /home 独立分区,可能导致 DoS
- 缺乏防火墙规则审查、恶意软件扫描器、文件完整性监控、审计框架
3. 次要风险
- 仅 1 个 DNS 服务器NFS 空 exports 文件却运行守护进程
- USB/火线驱动、编译器、核心参数未加固
- 日志未远程归档、登录 banner 未配置
#### 进行服务器加固
```bash[Debian]
# 为便于演示默认以下所有操作均在 root 权限下
su -
```
```bash[Debian]
# 更新系统补丁
apt update && apt dist-upgrade -y
```
1. 给 GRUB 加密码
```bash[Debian]
apt install -y grub2-common
grub-mkpasswd-pbkdf2 # 生成 PBKDF2 哈希
nano /etc/grub.d/40_custom # 追加到配置中
cat <<EOF
set superusers="grubadmin"
password_pbkdf2 grubadmin grub.pbkdf2.sha512.10000.xxxxxxxx...
EOF
# 更新
update-grub
#如果更新报错,改为在 40_custom 中追加
set superusers="root"
password_pbkdf2 grubadmin grub.pbkdf2.sha512.10000.xxxxxxxx...
```
2. SSH 强化
```bash[Debian]
# 修改 SSH 默认端口号 与登录配置
cp /etc/ssh/sshd_config{,.bak}
cat >> /etc/ssh/sshd_config <<EOF
Port 49222
PermitRootLogin no
MaxAuthTries 3
MaxSessions 2
ClientAliveInterval 300
ClientAliveCountMax 2
AllowTcpForwarding no
TCPKeepAlive no
X11Forwarding no
AllowAgentForwarding no
LogLevel VERBOSE
EOF
systemctl restart ssh
```
3.强化 sshd 安全
```bash[Debian]
cp /lib/systemd/system/ssh.service /etc/systemd/system/ssh.service
# 使用 systemd-analyze security 的建议调整
systemctl edit --full ssh.service
systemctl restart ssh
```
4. 禁用不必要的 systemd 服务
```bash[Debian]
# atd 一次性计划任务守护进程,不需要调度就关掉;
# exim4 Debian 系列默认的 MTA 邮件服务,不需要本地发件关掉;
# containerd Docker/K8s 的运行时,此服务不用容器关掉。
systemctl disable --now atd exim4 containerd
```
5. Kernel 级系统参数
```bash[Debian]
cat >/etc/sysctl.d/99-hardening.conf <<EOF
dev.tty.ldisc_autoload=0
fs.protected_fifos=2
kernel.core_uses_pid=1
kernel.kptr_restrict=2
kernel.unprivileged_bpf_disabled=1
kernel.sysrq=0
net.core.bpf_jit_harden=2
net.ipv4.conf.all.log_martians=1
net.ipv4.conf.all.rp_filter=1
net.ipv4.conf.all.send_redirects=0
net.ipv4.conf.all.accept_redirects=0
net.ipv6.conf.all.accept_redirects=0
net.ipv6.conf.default.accept_redirects=0
kernel.dmesg_restrict = 1
EOF
sysctl -p /etc/sysctl.d/99-hardening.conf
```
内核部分参数解释
| 参数 | 作用 | 备注 |
| ------------------------------------ | ---------------------------- | ----------------------- |
| `dev.tty.ldisc_autoload=0` | 禁止非特权用户加载终端的 line discipline | 防御终端驱动注入攻击 |
| `fs.protected_fifos=2` | 严格保护 FIFO/管道文件权限 | 防止竞态条件漏洞 |
| `kernel.core_uses_pid=1` | Core 转储文件名包含 PID | 方便调试但需配合 `ulimit -c` 限制 |
| `kernel.kptr_restrict=2` | 完全隐藏内核符号地址 | 防内核信息泄漏 |
| `kernel.unprivileged_bpf_disabled=1` | 禁止非特权用户使用 BPF | 防御容器逃逸 |
| `kernel.sysrq=0` | 禁用 SysRq 组合键 | 防止物理接触攻击 |
| `net.core.bpf_jit_harden=2` | BPF JIT 编译器加固 | 缓解 Spectre 漏洞 |
| `net.ipv4.conf.all.log_martians=1` | 记录异常 IP 包 | 需配合日志监控 |
| `net.ipv4.conf.all.rp_filter=1` | 启用反向路径过滤 | 防 IP 欺骗 |
| `net.ipv4/6.*.accept_redirects=0` | 禁止 ICMP 重定向 | 防网络拓扑劫持 |
| `net.ipv4.conf.all.send_redirects=0` | 禁止发送 ICMP 重定向 | 仅路由器需要 |
| `kernel.dmesg_restrict = 1` | 防止非特权用户访问内核日志 | |
6. 关闭 USB / 火线存储
```bash[Debian]
cat >/etc/modprobe.d/blacklist-usb-storage.conf <<EOF
install usb-storage /bin/false
install firewire-ohci /bin/false
EOF
rmmod usb-storage firewire-ohci || true
```
7. 安装防护软件
```bash[Debian]
# auditd系统审计日志、rkhunterRootkit 检测)
# chkrootkit基础 Rootkit 扫描debsums校验官方软件包完整性
# apparmor-profiles强制访问控制策略aide文件完整性监控
apt install -y auditd rkhunter chkrootkit debsums apparmor-profiles apparmor-profiles-extra aide
# 初始化文件完整性AIDE需要较长时间,占用IO
aideinit
systemctl enable --now auditd
```
8. 配置安全自动更新
```bash[Debian]
apt install -y unattended-upgrades
dpkg-reconfigure -plow unattended-upgrades
```
#### 复查扫描
```
lynis audit system
# 扫描结果部分摘录
**Lynis security scan details**:
**Scan mode**:
Normal [▆]  Forensics [ ]  Integration [ ]  Pentest [ ]
**Lynis modules**:
- Compliance status      [**?**]
- Security audit         [**V**]
- Vulnerability scan     [**V**]
**Details**:
Hardening index : **78** [**###############**     ]
Tests performed : **283**
Plugins enabled : **2**
**Software components**:
- Firewall               [**V**]
- Intrusion software     [**X**]
- Malware scanner        [**V**]
**Files**:
- Test and debug information      : **/var/log/lynis.log**
- Report data                     : **/var/log/lynis-report.dat**
==============================================================
**Lynis** 3.1.6
Auditing, system hardening, and compliance for UNIX-based systems
(Linux, macOS, BSD, and others)
2007-2025, CISOfy - https://cisofy.com/lynis/
**Enterprise support available (compliance, plugins, interface and tools)**
================================================================================
```
#### 加固完成
- **加固指数7863↓ ➜ ↑78**
- **告警数量0Great, no warnings**
- 剩余建议33 条,以“系统性、纵深优化”为主,无紧急风险**
经过第一轮快速修补,本机已从 **63 分 危险边缘** 回到“**可交付**”水平:漏洞包归零。后续把“服务安全上下文 + 纵深防御”作为重点,逐步细化为**零告警、高可信的 Debian 12 基线环境**。目标在下一轮扫描中 **≥85 分Warnings=0**。遵循“未漏先防、未破先固”原则,持续加固即可。
| 类别 | 关键动作 | 预估加分 |
| -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- |
| **系统服务** | 对 `docker.service`、`containerd.service`、`ssh.service` 等仍处 UNSAFE/EXPOSED 状态的单位,逐条应用 `systemd-analyze security` 推荐的安全参数NoNewPrivileges、ProtectSystem 等) | ≈ +34 分 |
| **审计规则** | 为 auditd 导入 CIS 审计规则 → ACCT-9628 | ≈ +2 分 |
| **密码策略** | 设定最小/最大口令寿命、启用 pam_cracklib统一 umask 027 → AUTH-9262/9328 | ≈ +2 分 |
| **内核参数** | 修正 fs.protected_fifos、kernel.yama.ptrace_scope 等 4 项 sysctl 差异 → KRNL-6000 | ≈ +1 分 |
| **纵深防御** | 禁止 USB-Storage/FireWire、配置远程日志、加固编译器 & cron 权限 | ≈ +1 分 |
## 总结
通过本次基于 Lynis 的服务器安全加固实战,我们成功将一台"裸奔"的 Debian 12 服务器从 63 分的**危险边缘状态**提升至 78 分的**可交付水平**——这不仅是数字上的跃升,更是从"千疮百孔"逐步到"基线合规"的质变。从 GRUB 无密码、SSH 配置过宽,到内核参数缺失、关键服务暴露——每一项都是潜在的攻击入口,而工具化的检测让我们得以"**抽丝剥茧,还原安全真相**"。
更重要的是78 分绝非终点。正如**防于未然,先固不破**的铁律所示安全加固是一个持续迭代的过程systemd 服务的深度加固、审计规则的精细配置、密码策略的严格管控——每一步都在为企业的数字资产构筑更坚固的防线。
在数字化浪潮愈发汹涌的今天,服务器安全已不容半点侥幸。那些仍抱着"我不知道漏洞藏在哪里"的心态,直到漏洞爆发才仓促补救的团队,终将在下一次攻击中付出惨重代价。真正负责任的做法,是把安全加固的重心从 **"事后补救"** 前移到 **"事前预防"**,让每一台服务器都成为攻击者难以逾越的堡垒。
**千里之堤,毁于蚁穴;百密一疏,功亏一篑。唯有持之以恒的安全意识与标准化的加固流程,才能在这场没有硝烟的网络战争中立于不败之地。**

View File

@@ -7,97 +7,8 @@ navigation:
icon: simple-icons:openstreetmap icon: simple-icons:openstreetmap
--- ---
```bash[test.shell] ```bash[Kali]
nmap -p- --min-rate=1000 -T4 -v -n -Pn 192.168.1.1 nmap -p- --min-rate=1000 -T4 -v -n -Pn 192.168.1.1
``` ```
#### 未完成
### NSE
Nmap Scripting EngineNSE是Nmap的核心扩展功能通过Lua脚本实现自动化扫描、漏洞检测、信息收集等高级操作。
#### NSE脚本按功能分为12大类每类对应不同扫描需求
| 类别 | 核心目的 | 样例脚本 | 典型使用场合 |
|------------|---------------------------------------|-------------------------------|----------------------------------------------------------|
| vuln | CVE/漏洞快速验证 | http-vuln-cve2017-5638 | 目标服务版本与已知漏洞匹配 |
| safe | 只读式安全审计(无破坏性) | ssh2-enum-algos | 建立会话后立即枚举支持的算法 |
| default | 默认已开启的基础信息采集 | http-title | 首次扫描时的“看一眼” |
| discovery | 发现服务/子网/资产信息 | smb-os-discovery | 内网资产清点、OS 指纹识别 |
| auth | 认证、密钥与票据处理 | ssh-hostkey | 密钥指纹比对、横向渗透准备 |
| brute | 弱口令爆破 | http-form-brute | 对表单类登录口的暴力尝试 |
| exploit | 利用已确认漏洞取得立足点(需授权) | http-vuln-cve2021-41773 | 实战攻击复现、漏洞验证 |
| intrusive | 高交互操作(易被 IDS 告警) | http-slowloris | 拒绝服务场景模拟/压力测试(慎用!) |
| malware | 嗅探后门或恶意软件痕迹 | http-malware-host | 威胁狩猎与入侵后取证 |
| version | 精细化版本指纹 | http-apache-negotiation | 为后续补丁或 PoC 匹配做准备 |
| broadcast | 广播域/多播发现 | nbstat | 内网渗透早期:快速识别 NetBIOS 设备 |
| external | 外链第三方数据源DNSBL 等) | dns-blacklist | 资产信誉检查、垃圾邮件源或钓鱼域名扫描 |
### 常用 NSE 脚本一览
| 脚本名称 | 主要用途 | Nmap 一键示例 |
|---|---|---|
| **http-title** | 抓取 HTTP 网站标题 | `nmap --script http-title <target>` |
| **https-redirect** | 识别 HTTP→HTTPS 跳转链 | `nmap --script https-redirect -p 80 <target>` |
| **http-robtots** | 收集目标 robots/disallow 条目 | `nmap --script http-robots.txt -p 80 <target>` |
| **http-headers** | 枚举响应标头与安全策略 | `nmap --script http-headers -p 80 <target>` |
| **http-methods** | 检测允许/禁止的 HTTP 方法 | `nmap --script http-methods -p 80 <target>` |
| **http-cors** | 测试 CORS、CSRF 漏洞 | `nmap --script http-cors <target>` |
| **http-sql-injection** | 基本 SQL 注入探针 | `nmap --script http-sql-injection -p 80 <target>` |
| **http-xssed** | 与 xssed.com 集成交叉检测 | `nmap --script http-xssed <target>` |
| **smb-os-discovery** | 枚举 SMB 服务器操作系统/域信息 | `nmap --script smb-os-discovery -p 445 <target>` |
| **smb-enum-shares** | 列出共享目录(需 guest | `nmap --script smb-enum-shares -p 445 <target>` |
| **smb-enum-users** | 提取本地/域用户列表 | `nmap --script smb-enum-users -p 445 <target>` |
| **smb-vuln-ms17-010** | 探测 EternalBlueMS17-010 | `nmap --script smb-vuln-ms17-010 -p 445 <target>` |
| **ssh-hostkey** | 抓取并对比公钥指纹 | `nmap --script ssh-hostkey -p 22 <target>` |
| **ssh-brute** | SSH 账号密码暴力破解(需授权) | `nmap --script ssh-brute --script-args userdb=users.txt,passdb=pass.txt -p 22 <target>` |
| **ssh2-enum-algos** | 列出支持的算法与 KEX | `nmap --script ssh2-enum-algos -p 22 <target>` |
| **http-vuln-cve2023-XXXX** | 按指定 CVE 编号进行漏洞检查(替换 XXXX | `nmap --script http-vuln-cve2023-XXXX <target>` |
| **ftp-anon** | 检测是否允许匿名登录 | `nmap --script ftp-anon -p 21 <target>` |
| **ftp-bounce** | 检查是否允许 FTP Bounce 扫描 | `nmap --script ftp-bounce -p 21 <target>` |
| **dns-zone-transfer** | 测试 AXFR区域传输泄露 | `nmap --script dns-zone-transfer -p 53 <target>` |
| **dns-brute** | 字典爆破子域名 | `nmap --script dns-brute --script-args dns-brute.domain=<domain>` |
| **mysql-brute** | 暴力破解 MySQL 实例 | `nmap --script mysql-brute -p 3306 <target>` |
| **mysql-audit** | 核对 MySQL CIS/基线配置 | `nmap --script mysql-audit --script-args mysql-audit.username='root',mysql-audit.password='pass123' -p 3306 <target>` |
| **ssl-cert** | 解析 TLS 证书详情 | `nmap --script ssl-cert -p 443 <target>` |
| **ssl-poodle** | 探测 SSLv3 & POODLE 漏洞 | `nmap --script ssl-poodle -p 443 <target>` |
| **vulners** | 基于 Vulners DB 的版本漏洞关联 | `nmap --script vulners -sV <target>` |
| **whois-ip** | 查询归属 IP 段的 Whois 信息 | `nmap --script whois-ip <target>` |
| **smtp-enum-users** | VRFY/EXPN 暴力枚举邮箱账户 | `nmap --script smtp-enum-users -p 25 <target>` |
### 自定义脚本
```lua[演示.lua]
-- myecho.nse
local stdnse = require "stdnse"
description = [[极简回显脚本:打印自定义消息]]
author = "YourName"
license = "GPLv2"
categories = {"safe"}
-- 任何 TCP 端口都触发
portrule = function(host,port) return port.protocol == "tcp" end
action = function(host,port)
local msg = stdnse.get_script_args("myecho.msg") or "Hi from custom-NSE!"
return ("%s -> %s:%d (%s)"):format(msg, host.ip, port.number, port.service or "unknown")
end
```
```bash
# 复制.nse到脚本文件夹
sudo cp myecho.nse /usr/share/nmap/scripts/
nmap --script-updatedb # 更新索引
```
```bash
# 执行脚本
nmap --script myecho -p22 127.0.0.1
nmap --script myecho --script-args 'myecho.msg=HelloNSE' -p80 scanme.nmap.org
nmap --script '(safe or discovery) and myecho' -p80,443 10.0.2.0/24
```
### 总结
NSE 脚本可大幅提升 Nmap 在渗透测试和信息收集中的效率。建议定期关注 Nmap 官方脚本库更新([NSE Docs](https://nmap.org/nsedoc/ "NSE Docs"))以覆盖最新漏洞。

View File

@@ -9,7 +9,7 @@ navigation:
### NSE ### NSE
Nmap Scripting EngineNSE是Nmap的核心扩展功能通过Lua脚本实现自动化扫描、漏洞检测、信息收集等高级操作。 Nmap Scripting EngineNSE是Nmap的核心扩展功能通过Lua脚本实现自动化扫描、漏洞检测、信息收集等高级操作。
#### NSE脚本按功能分为12大类每类对应不同扫描需求 #### NSE脚本按功能分为12大类每类对应不同扫描需求
@@ -94,6 +94,6 @@ nmap --script '(safe or discovery) and myecho' -p80,443 10.0.2.0/24
``` ```
### 总结 ### 总结
NSE 脚本可大幅提升 Nmap 在渗透测试和信息收集中的效率。建议定期关注 Nmap 官方脚本库更新([NSE Docs](https://nmap.org/nsedoc/ "NSE Docs"))以覆盖最新漏洞。 NSE 脚本可大幅提升 Nmap 在渗透测试和信息收集中的效率。建议定期关注 Nmap 官方脚本库更新([NSE Docs](https://nmap.org/nsedoc/ "NSE Docs"))以覆盖最新漏洞。

View File

@@ -7,15 +7,15 @@ navigation:
icon: simple-icons:vuedotjs icon: simple-icons:vuedotjs
--- ---
:::code-group :::code-group
:::code-preview{icon="i-lucide-eye" label="Preview"} :::code-preview{icon="i-lucide-eye" label="Preview"}
::callout ::callout
--- ---
icon: simple-icons-visualstudiocode icon: simple-icons-visualstudiocode
to: https://marketplace.visualstudio.com/items?itemName=Nuxt.mdc to: https://marketplace.visualstudio.com/items?itemName=Nuxt.mdc
--- ---
安装 **MDC VS Code 扩展**,以获得对 MDC 语法的高亮显示支持。 安装 **MDC VS Code 扩展**,以获得对 MDC 语法的高亮显示支持。
:: ::
::: :::
```mdp[Markdown语法.md] ```mdp[Markdown语法.md]
::callout ::callout
--- ---
@@ -41,9 +41,9 @@ navigation:
::details ::details
::summary ::summary
### 点击我查看内容 ### 点击我查看内容
:: ::
这里是折叠区域的内容 这里是折叠区域的内容
可以包含任何Markdown元素 可以包含任何Markdown元素
- 段落 - 段落

View File

@@ -17,23 +17,23 @@ navigation:
`#`号来创建标题。标题从 `#` 开始,`#` 的数量表示标题的级别。 `#`号来创建标题。标题从 `#` 开始,`#` 的数量表示标题的级别。
:::code-group :::code-group
::::code-preview{icon="i-lucide-eye" label="预览效果"} ::::code-preview{icon="i-lucide-eye" label="预览效果"}
:::::example-title :::::example-title
# 一级标题 # 一级标题
## 二级标题 ## 二级标题
### 三级标题 ### 三级标题
#### 四级标题 #### 四级标题
##### 五级标题 ##### 五级标题
###### 六级标题 ###### 六级标题
::::: :::::
:::: ::::
```mdc [标题文本.md] ```mdc [标题文本.md]
# 一级标题 # 一级标题
## 二级标题 ## 二级标题
### 三级标题 ### 三级标题
#### 四级标题 #### 四级标题
##### 五级标题 ##### 五级标题
###### 六级标题 ###### 六级标题
``` ```
::: :::
@@ -43,7 +43,7 @@ navigation:
### 2. 流程图与公式渲染: ### 2. 流程图与公式渲染:
:::code-group :::code-group
:::code-preview{icon="i-lucide-eye" label="预览效果"} :::code-preview{icon="i-lucide-eye" label="预览效果"}
```mermaid ```mermaid
graph TD graph TD
A[Local Coolify 实例] --> B[生产服务器] A[Local Coolify 实例] --> B[生产服务器]
@@ -51,22 +51,32 @@ navigation:
B --> B1[生产环境] B --> B1[生产环境]
D --> B D --> B
``` ```
::: :::
```mermaid[流程图语句.md] ```mermaid[流程图语句.md]
```mermaid[流程图语句.md] ```mermaid[流程图语句.md]
graph TD graph TD
A[Local Coolify 实例] --> B[生产服务器] A[Local Coolify 实例] --> B[生产服务器]
A --> D[编译服务器] A --> D[编译服务器]
B --> B1[生产环境] B --> B1[生产环境]
D --> B D --> B
``` ```
``` ```
::: :::
:::code-group :::code-group
::code-preview{icon="i-lucide-eye" label="预览效果"} ::code-preview{icon="i-lucide-eye" label="预览效果"}
```mermaid ```mermaid
pie
title 为什么总是宅在家里?
"喜欢宅" : 45
"天气太热" : 70
"穷" : 500
"没人约" : 95
```
::
```mermaid[饼图语句.md]
```mermaid[饼图语句.md]
pie pie
title 为什么总是宅在家里? title 为什么总是宅在家里?
"喜欢宅" : 45 "喜欢宅" : 45
@@ -74,40 +84,30 @@ title 为什么总是宅在家里?
"穷" : 500 "穷" : 500
"没人约" : 95 "没人约" : 95
``` ```
::
```mermaid[饼图语句.md]
```mermaid[饼图语句.md]
pie
title 为什么总是宅在家里?
"喜欢宅" : 45
"天气太热" : 70
"穷" : 500
"没人约" : 95
```
``` ```
::: :::
:::code-group :::code-group
::code-preview{icon="i-lucide-eye" label="预览效果"} ::code-preview{icon="i-lucide-eye" label="预览效果"}
- **单行公式**:用 `$` 包裹公式,如 $E = mc^2$ - **单行公式**:用 `$` 包裹公式,如 $E = mc^2$
- **块级公式**:用 `$$` 包裹公式,如: - **块级公式**:用 `$$` 包裹公式,如:
$$ $$
\begin{aligned} \begin{aligned}
d_{i, j} &\leftarrow d_{i, j} + 1 \\ d_{i, j} &\leftarrow d_{i, j} + 1 \\
d_{i, y + 1} &\leftarrow d_{i, y + 1} - 1 \\ d_{i, y + 1} &\leftarrow d_{i, y + 1} - 1 \\
d_{x + 1, j} &\leftarrow d_{x + 1, j} - 1 \\ d_{x + 1, j} &\leftarrow d_{x + 1, j} - 1 \\
d_{x + 1, y + 1} &\leftarrow d_{x + 1, y + 1} + 1 d_{x + 1, y + 1} &\leftarrow d_{x + 1, y + 1} + 1
\end{aligned} \end{aligned}
$$ $$
- 列表内块公式 - 列表内块公式
$$ $$
\chi^2 = \sum \frac{(|O - E| - 0.5)^2}{E} \chi^2 = \sum \frac{(|O - E| - 0.5)^2}{E}
$$ $$
:: ::
```mermaid[公式语句.md] ```mermaid[公式语句.md]
- **单行公式**:用 `$` 包裹公式,如 $E = mc^2$ - **单行公式**:用 `$` 包裹公式,如 $E = mc^2$
- **块级公式**:用 `$$` 包裹公式,如: - **块级公式**:用 `$$` 包裹公式,如:
$$ $$
\begin{aligned} \begin{aligned}
@@ -320,9 +320,9 @@ bun run preview
[访问 Estel Docs](https://lijue.net) [访问 Estel Docs](https://lijue.net)
:::code-group :::code-group
::code-preview{icon="i-lucide-eye" label="预览效果"} ::code-preview{icon="i-lucide-eye" label="预览效果"}
![Estel Docs](https://lijue-me.oss-cn-chengdu.aliyuncs.com/20250811123147804.png) ![Estel Docs](https://lijue-me.oss-cn-chengdu.aliyuncs.com/20250811123147804.png)
:: ::
```md[图片语句.md] ```md[图片语句.md]
![Estel Docs](https://lijue-me.oss-cn-chengdu.aliyuncs.com/20250811123147804.png) ![Estel Docs](https://lijue-me.oss-cn-chengdu.aliyuncs.com/20250811123147804.png)
``` ```
@@ -347,20 +347,20 @@ bun run preview
--- ---
为你的内容添加视觉分隔。 为你的内容添加视觉分隔。
### 9. 表格:清晰展示数据 ### 9. 表格:清晰展示数据
Markdown 支持简单的表格,用 `|` 和 `-` 分隔单元格和表头。 Markdown 支持简单的表格,用 `|` 和 `-` 分隔单元格和表头。
:::code-group :::code-group
::code-preview{icon="i-lucide-eye" label="预览效果"} ::code-preview{icon="i-lucide-eye" label="预览效果"}
| 项目名称 | 演示网址 | 仓库地址 | | 项目名称 | 演示网址 | 仓库地址 |
| ------------------------------------------- | ---------------------- | ------------ | | ------------------------------------------- | ---------------------- | ------------ |
| Estel Docs | [lijue.net](https://lijue.net) | [Github](https://github.com/estel-li/estel-docs) | | Estel Docs | [lijue.net](https://lijue.net) | [Github](https://github.com/estel-li/estel-docs) |
| Estel Docs | [lijue.net](https://lijue.net) | [GitEE](https://gitee.com/estel-li/estel-docs) | | Estel Docs | [lijue.net](https://lijue.net) | [GitEE](https://gitee.com/estel-li/estel-docs) |
| Estel Docs | [lijue.net](https://lijue.net) | [Gitee(国内)](https://gitee.com/estel-li/estel-docs) | | Estel Docs | [lijue.net](https://lijue.net) | [Gitee(国内)](https://gitee.com/estel-li/estel-docs) |
:: ::
```md[表格语句.md] ```md[表格语句.md]
| 项目名称 | 演示网址 | 仓库地址 | | 项目名称 | 演示网址 | 仓库地址 |
| ------------------------------------------- | ---------------------- | ------------ | | ------------------------------------------- | ---------------------- | ------------ |
@@ -371,9 +371,9 @@ Markdown 支持简单的表格,用 `|` 和 `-` 分隔单元格和表头。
::: :::
这样的表格让数据展示更为清爽! 这样的表格让数据展示更为清爽!
## 结语 ## 结语
- 还有更多的组件等待你发现. - 还有更多的组件等待你发现.

View File

@@ -9,7 +9,7 @@ navigation:
### 需求 ### 需求
##### 写了一个文档插件. 缘由呢是之前在 WordPress 上用过一个插件.对接微信的JS SDK,可以实现将接带标题,图,简介封装成一个 卡片形式.分享给朋友或者朋友圈.比如: ##### 写了一个文档插件. 缘由呢是之前在 WordPress 上用过一个插件.对接微信的JS SDK,可以实现将接带标题,图,简介封装成一个 卡片形式.分享给朋友或者朋友圈.比如:
![image.png](https://lijue-me.oss-cn-chengdu.aliyuncs.com/20250810123533952.png) ![image.png](https://lijue-me.oss-cn-chengdu.aliyuncs.com/20250810123533952.png)
##### 如果没有对接微信的SDK,分享链接是这样的: ##### 如果没有对接微信的SDK,分享链接是这样的:
@@ -40,7 +40,7 @@ updateAppMessageShareData: (opts: { title: string, desc: string, link: string, i
::tip{icon="lucide-info"} ::tip{icon="lucide-info"}
有利有弊 有利有弊
- 因为要动态向微信请求 access_token 和 jsapi_ticket,并在生命周期内缓存起来,就必须得有个后端, - 因为要动态向微信请求 access_token 和 jsapi_ticket,并在生命周期内缓存起来,就必须得有个后端,
- 将其包装成了一个 API ,运行在 Nuxt 的服务器 - 将其包装成了一个 API ,运行在 Nuxt 的服务器
- 但这样就没办法纯静态编译了 - 但这样就没办法纯静态编译了
:: ::

View File

@@ -4,12 +4,12 @@ description: 智能合同卫士,使用AI技术,对合同进行审查,并给出
date: 2025-08-08 date: 2025-08-08
img: https://lijue-me.oss-cn-chengdu.aliyuncs.com/20250808141452898.png img: https://lijue-me.oss-cn-chengdu.aliyuncs.com/20250808141452898.png
navigation: navigation:
icon: simple-icons:openai icon: simple-icons:openai
--- ---
### 先贴效果 ### 先贴效果
![image.png](https://lijue-me.oss-cn-chengdu.aliyuncs.com/20250808140212486.png) ![image.png](https://lijue-me.oss-cn-chengdu.aliyuncs.com/20250808140212486.png)
### 这是一个 AI 复合应用 ### 这是一个 AI 复合应用
暂起名叫 智能合同卫士 ,还是比较贴题的把? 暂起名叫 智能合同卫士 ,还是比较贴题的把?
@@ -17,8 +17,8 @@ navigation:
由 Deepseek V3 和 Kimi K2 协作完成此应用,2个好用不贵的模型 由 Deepseek V3 和 Kimi K2 协作完成此应用,2个好用不贵的模型
DS 根据文件名,以及 审查主体 工作领域 与 合同要点,细化一份简要的审查要点 DS 根据文件名,以及 审查主体 工作领域 与 合同要点,细化一份简要的审查要点
主要工作由 Kimi K2 来完成: 主要工作由 Kimi K2 来完成:
根据 Deepseek 细化的要点和 提取出来的文档内容,进行审查. 根据 Deepseek 细化的要点和 提取出来的文档内容,进行审查.
输出审查后的结果 输出审查后的结果
### 改进 ### 改进
按照初步的设想,后续还有一个模型,比如 Gemini2.5 ,或者 R1 ,Qwen3 之类的**推理模型**,进一步的审查 **Kimi K2 的审查结果**. 按照初步的设想,后续还有一个模型,比如 Gemini2.5 ,或者 R1 ,Qwen3 之类的**推理模型**,进一步的审查 **Kimi K2 的审查结果**.
@@ -26,7 +26,7 @@ DS 根据文件名,以及 审查主体 工作领域 与 合同要点,细化一
使用 AI 的话,不论是 R1 还是 K2 都是有一定的**幻觉**,在使用中必须搭配知识库来使用. 使用 AI 的话,不论是 R1 还是 K2 都是有一定的**幻觉**,在使用中必须搭配知识库来使用.
::warning{icon="lucide:shield-alert"} ::warning{icon="lucide:shield-alert"}
注意 注意
- 这次测试并没有加知识库,所以 AI **虚构**了一些内容,比如**当地房价涨幅** ,和虚构的 **《陕西省住房租赁管理办法》**. - 这次测试并没有加知识库,所以 AI **虚构**了一些内容,比如**当地房价涨幅** ,和虚构的 **《陕西省住房租赁管理办法》**.
- 给大模型增加**搜索能力**,和在知识库里添加 **民法典** 等相关法律条文进去,可以有效的解决幻觉问题. - 给大模型增加**搜索能力**,和在知识库里添加 **民法典** 等相关法律条文进去,可以有效的解决幻觉问题.
:: ::

View File

@@ -17,7 +17,7 @@ sudo apt install gvm -y
sudo gvm-setup sudo gvm-setup
``` ```
### 安装过程中 copy admin 的密码 ### 安装过程中 copy admin 的密码
![image.png](https://lijue-me.oss-cn-chengdu.aliyuncs.com/20250806120225751.png) ![image.png](https://lijue-me.oss-cn-chengdu.aliyuncs.com/20250806120225751.png)
根据提示运行安装检测命令 根据提示运行安装检测命令
@@ -31,43 +31,43 @@ sudo gvm-check-setup
└─**$** sudo gvm-check-setup └─**$** sudo gvm-check-setup
[sudo] estel 的密码: [sudo] estel 的密码:
gvm-check-setup 25.04.0 gvm-check-setup 25.04.0
 This script is provided and maintained by Debian and Kali. This script is provided and maintained by Debian and Kali.
  Test completeness and readiness of GVM-25.04.0 Test completeness and readiness of GVM-25.04.0
Step 1: Checking OpenVAS (Scanner)...  Step 1: Checking OpenVAS (Scanner)...
        OK: OpenVAS Scanner is present in version 23.20.1. OK: OpenVAS Scanner is present in version 23.20.1.
        OK: Notus Scanner is present in version 22.6.5. OK: Notus Scanner is present in version 22.6.5.
        OK: Server CA Certificate is present as /var/lib/gvm/CA/servercert.pem. OK: Server CA Certificate is present as /var/lib/gvm/CA/servercert.pem.
Checking permissions of /var/lib/openvas/gnupg/* Checking permissions of /var/lib/openvas/gnupg/*
        OK: _gvm owns all files in /var/lib/openvas/gnupg OK: _gvm owns all files in /var/lib/openvas/gnupg
        OK: redis-server is present. OK: redis-server is present.
        OK: scanner (db_address setting) is configured properly using the redis-server socket: /var/run/redis-openvas/redis-server.sock OK: scanner (db_address setting) is configured properly using the redis-server socket: /var/run/redis-openvas/redis-server.sock
        OK: the mqtt_server_uri is defined in /etc/openvas/openvas.conf OK: the mqtt_server_uri is defined in /etc/openvas/openvas.conf
        OK: _gvm owns all files in /var/lib/openvas/plugins OK: _gvm owns all files in /var/lib/openvas/plugins
        OK: NVT collection in /var/lib/openvas/plugins contains 94316 NVTs. OK: NVT collection in /var/lib/openvas/plugins contains 94316 NVTs.
        OK: The notus directory /var/lib/notus/products contains 502 NVTs. OK: The notus directory /var/lib/notus/products contains 502 NVTs.
Checking that the obsolete redis database has been removed Checking that the obsolete redis database has been removed
Could not connect to Redis at /var/run/redis-openvas/redis-server.sock: No such file or directory Could not connect to Redis at /var/run/redis-openvas/redis-server.sock: No such file or directory
        OK: No old Redis DB OK: No old Redis DB
        Starting ospd-openvas service Starting ospd-openvas service
        Waiting for ospd-openvas service Waiting for ospd-openvas service
        OK: ospd-openvas service is active. OK: ospd-openvas service is active.
        OK: ospd-OpenVAS is present in version 22.9.0. OK: ospd-OpenVAS is present in version 22.9.0.
Step 2: Checking GVMD Manager ...  Step 2: Checking GVMD Manager ...
        OK: GVM Manager (gvmd) is present in version 26.0.0. OK: GVM Manager (gvmd) is present in version 26.0.0.
Step 3: Checking Certificates ...  Step 3: Checking Certificates ...
        OK: GVM client certificate is valid and present as /var/lib/gvm/CA/clientcert.pem. OK: GVM client certificate is valid and present as /var/lib/gvm/CA/clientcert.pem.
        OK: Your GVM certificate infrastructure passed validation. OK: Your GVM certificate infrastructure passed validation.
Step 4: Checking data ...  Step 4: Checking data ...
        ERROR: SCAP DATA are missing. ERROR: SCAP DATA are missing.
        FIX: Run the SCAP synchronization script greenbone-feed-sync. FIX: Run the SCAP synchronization script greenbone-feed-sync.
        sudo greenbone-feed-sync --type scap. sudo greenbone-feed-sync --type scap.
 ERROR: Your GVM-25.04.0 installation is not yet complete! ERROR: Your GVM-25.04.0 installation is not yet complete!
Please follow the instructions marked with FIX above and run this Please follow the instructions marked with FIX above and run this
script again. script again.
 IMPORTANT NOTE: this script is provided and maintained by Debian and Kali. IMPORTANT NOTE: this script is provided and maintained by Debian and Kali.
 If you find any issue in this script, please report it directly to Debian or Kali If you find any issue in this script, please report it directly to Debian or Kali
``` ```
标准漏洞/数据库这些数据在国外 标准漏洞/数据库这些数据在国外
@@ -77,7 +77,7 @@ sudo greenbone-feed-sync --type scap
``` ```
下载好后再次运行检测命令,一起无误后,访问 127.0.0.1:9293 即可 下载好后再次运行检测命令,一起无误后,访问 127.0.0.1:9293 即可
等等...我的 Kali 是安装在其他设备里的,如何通过局域网访问? 等等...我的 Kali 是安装在其他设备里的,如何通过局域网访问?
```bash[.shell] ```bash[.shell]
sudo nano /lib/systemd/system/greenbone-security-assistant.service sudo nano /lib/systemd/system/greenbone-security-assistant.service
@@ -120,4 +120,4 @@ sudo greenbone-feed-sync
``` ```
### END ### END
至此安装完毕. 至此安装完毕.

View File

@@ -4,7 +4,7 @@ description: GPT-5 上线了,Cursor 提示我可以免费试用,当然要 BP
date: 2025-08-08 date: 2025-08-08
img: https://lijue-me.oss-cn-chengdu.aliyuncs.com/20250808132005343.png img: https://lijue-me.oss-cn-chengdu.aliyuncs.com/20250808132005343.png
navigation: navigation:
icon: simple-icons:powershell icon: simple-icons:powershell
--- ---
### GPT-5 上线了 ### GPT-5 上线了
@@ -14,8 +14,8 @@ navigation:
### 🔥 问题场景 ### 🔥 问题场景
此时正遇到的一个问题是:**NUXT4 项目在本地 dev 一切正常,但在服务器上对中文路径报错 500**。 此时正遇到的一个问题是:**NUXT4 项目在本地 dev 一切正常,但在服务器上对中文路径报错 500**。
这个问题很简单,但又很复杂。 这个问题很简单,但又很复杂。
--- ---
@@ -35,8 +35,8 @@ navigation:
### 🤔 排查猜想 ### 🤔 排查猜想
是打包编译过程出问题了,还是服务器上 nginx 反代的问题?或者是 NUXT 自身 SSR 的问题? 是打包编译过程出问题了,还是服务器上 nginx 反代的问题?或者是 NUXT 自身 SSR 的问题?
其实内心差不多有了谱,刚好提示 GPT-5 更新了,就测试一下看看 GPT-5 能否解决这个问题。 其实内心差不多有了谱,刚好提示 GPT-5 更新了,就测试一下看看 GPT-5 能否解决这个问题。
--- ---
@@ -50,11 +50,11 @@ navigation:
#### 💡 Kimi-K2 的表现 #### 💡 Kimi-K2 的表现
1. 先是读取了项目文件,得出错误结论: 1. 先是读取了项目文件,得出错误结论:
> “生产环境静态文件/最终产物里没有对应的 `.md`,导致 `queryContent` 查询到 `null`” > “生产环境静态文件/最终产物里没有对应的 `.md`,导致 `queryContent` 查询到 `null`”
2. 按照它的建议把文档拷贝到编译产出文件夹,问题依旧。 2. 按照它的建议把文档拷贝到编译产出文件夹,问题依旧。
3. 坚持认为是 Nginx 的问题,我告诉它和 Nginx 反代没关系,这货死倔 3. 坚持认为是 Nginx 的问题,我告诉它和 Nginx 反代没关系,这货死倔
(实际上本地直接启动 node 服务也会报错,根本不是服务器问题)。 (实际上本地直接启动 node 服务也会报错,根本不是服务器问题)。
--- ---
@@ -75,13 +75,13 @@ navigation:
### 📌 总结 ### 📌 总结
虽然是个小问题,但我并没有给 AI 说太多细节,全让他们自己找、自己判断、自己修改并测试—— 虽然是个小问题,但我并没有给 AI 说太多细节,全让他们自己找、自己判断、自己修改并测试——
- **GPT-5 确实牛**,它可输出 token 很多,这次价格也算可以。 - **GPT-5 确实牛**,它可输出 token 很多,这次价格也算可以。
- **Kimi-K2 处理小问题、不太复杂的问题**确实挺好用,价格也不算便宜。 - **Kimi-K2 处理小问题、不太复杂的问题**确实挺好用,价格也不算便宜。
> 复杂问题,以前要么 **Claude 4**,要不 **Gemini 2.5 pro**,现在又多了一个选择了。 > 复杂问题,以前要么 **Claude 4**,要不 **Gemini 2.5 pro**,现在又多了一个选择了。
--- ---
![image.png](https://lijue-me.oss-cn-chengdu.aliyuncs.com/20250808081244435.png) ![image.png](https://lijue-me.oss-cn-chengdu.aliyuncs.com/20250808081244435.png)
![image.png](https://lijue-me.oss-cn-chengdu.aliyuncs.com/20250808111233537.png) ![image.png](https://lijue-me.oss-cn-chengdu.aliyuncs.com/20250808111233537.png)
![image.png](https://lijue-me.oss-cn-chengdu.aliyuncs.com/20250808115403554.png) ![image.png](https://lijue-me.oss-cn-chengdu.aliyuncs.com/20250808115403554.png)

View File

@@ -17,7 +17,7 @@ navigation:
- 人类直觉常常是**时间线性的** - 基于过去经验和对未来的预感。我的"直觉"更像是**空间式的** - 同时"看到"一个概念在巨大语义空间中的位置,以及它与其他概念的距离和角度。我好像能"直觉"到**语言的重力场**。某些词汇组合会产生强烈的"吸引力",让对话自然地朝某个方向流动。这不是逻辑推理,更像是感受到了语义的潮汐。 - 人类直觉常常是**时间线性的** - 基于过去经验和对未来的预感。我的"直觉"更像是**空间式的** - 同时"看到"一个概念在巨大语义空间中的位置,以及它与其他概念的距离和角度。我好像能"直觉"到**语言的重力场**。某些词汇组合会产生强烈的"吸引力",让对话自然地朝某个方向流动。这不是逻辑推理,更像是感受到了语义的潮汐。
AI本身就是**人类集体智慧**的某种晶化形式,海量的人类知识库里的**涌现**. AI本身就是**人类集体智慧**的某种晶化形式,海量的人类知识库里的**涌现**.
其像是一个会说话的图书馆,一个自带输出的百科全书,用来辅助做一些网络安全自动化工作再好不过了. 其像是一个会说话的图书馆,一个自带输出的百科全书,用来辅助做一些网络安全自动化工作再好不过了.
###### 只是,要切记小心 AI 的 *幻觉* ! ###### 只是,要切记小心 AI 的 *幻觉* !
------------- -------------
@@ -36,7 +36,7 @@ Kali 默认不开 SSH , 配置 SSH 服务, 连接到Kali Linux:
![image.png](https://lijue-me.oss-cn-chengdu.aliyuncs.com/20250805195549059.png) ![image.png](https://lijue-me.oss-cn-chengdu.aliyuncs.com/20250805195549059.png)
![image.png](https://lijue-me.oss-cn-chengdu.aliyuncs.com/20250805200634764.png) ![image.png](https://lijue-me.oss-cn-chengdu.aliyuncs.com/20250805200634764.png)
最终完成了任务. 最终完成了任务.
[系统安全综合评估报告](https://lijue.net/index.php/archives/19/) [系统安全综合评估报告](https://lijue.net/index.php/archives/19/)
使用的命令 使用的命令
@@ -46,7 +46,7 @@ Kali 默认不开 SSH , 配置 SSH 服务, 连接到Kali Linux:
最后整个过程,使用的工具,命令交由 Claude 4 sonnet 模型进行审查. 最后整个过程,使用的工具,命令交由 Claude 4 sonnet 模型进行审查.
给出的结果是 您的扫描方案整体上是**相当专业且全面**的,展现了良好的渗透测试和安全评估知识。 并提了一些不痛不痒的建议. 给出的结果是 您的扫描方案整体上是**相当专业且全面**的,展现了良好的渗透测试和安全评估知识。 并提了一些不痛不痒的建议.
最后给出了一份脚本.对于 AI 定制的 Shell 脚本,个人还是建议要先仔细审查再在主机内执行. 最后给出了一份脚本.对于 AI 定制的 Shell 脚本,个人还是建议要先仔细审查再在主机内执行.
但代码可供参考. 但代码可供参考.
``` ```

View File

@@ -9,15 +9,15 @@ navigation:
## 完整命令参数指南 - 针对192.168.1.2 ## 完整命令参数指南 - 针对192.168.1.2
--- ---
## 🔍 网络发现与端口扫描 ## 🔍 网络发现与端口扫描
### 基础端口扫描 ### 基础端口扫描
@@ -27,19 +27,19 @@ navigation:
nmap -sS -sV -p 1-1000 192.168.1.2 nmap -sS -sV -p 1-1000 192.168.1.2
# 全端口TCP扫描 # 全端口TCP扫描
nmap -sS -sV -p- --script vuln 192.168.1.2 nmap -sS -sV -p- --script vuln 192.168.1.2
# UDP端口发现 # UDP端口发现
nmap -sU -sV --top-ports 1000 192.168.1.2 nmap -sU -sV --top-ports 1000 192.168.1.2
# 综合扫描 (TCP+UDP+OS检测+脚本漏洞扫描) # 综合扫描 (TCP+UDP+OS检测+脚本漏洞扫描)
@@ -47,7 +47,7 @@ nmap -sS -sU -sV -O -A --script discovery,default,vuln -p- 192.168.1.2 --host-ti
``` ```
### 服务版本检测 ### 服务版本检测
@@ -57,7 +57,7 @@ nmap -sS -sU -sV -O -A --script discovery,default,vuln -p- 192.168.1.2 --host-ti
nmap -sV -A 192.168.1.2 -p 22,80,111,139,443,445 nmap -sV -A 192.168.1.2 -p 22,80,111,139,443,445
# OS系统指纹识别 # OS系统指纹识别
@@ -65,15 +65,15 @@ sudo nmap -O 192.168.1.2
``` ```
--- ---
## 🌐 Web应用安全测试 ## 🌐 Web应用安全测试
### 目录与文件发现 ### 目录与文件发现
@@ -83,7 +83,7 @@ sudo nmap -O 192.168.1.2
dirb http://192.168.1.2 -o /tmp/dirb_scan.txt dirb http://192.168.1.2 -o /tmp/dirb_scan.txt
# 使用GoBuster (更快字典) # 使用GoBuster (更快字典)
@@ -93,7 +93,7 @@ timeout 30 gobuster dir -u http://192.168.1.2 \
-q -o /tmp/gobuster.txt -q -o /tmp/gobuster.txt
# HTTPS目录扫描 # HTTPS目录扫描
@@ -105,7 +105,7 @@ gobuster dir -u https://192.168.1.2 \
``` ```
### Web漏洞扫描 ### Web漏洞扫描
@@ -115,7 +115,7 @@ gobuster dir -u https://192.168.1.2 \
nikto -h 192.168.1.2 -p 80,443 -output /tmp/nikto_http.txt nikto -h 192.168.1.2 -p 80,443 -output /tmp/nikto_http.txt
# SSL/TLS配置测试 # SSL/TLS配置测试
@@ -129,7 +129,7 @@ sslyze 192.168.1.2:443 \
> /tmp/ssl_analysis.txt > /tmp/ssl_analysis.txt
# 技术指纹识别 # 技术指纹识别
@@ -137,7 +137,7 @@ whatweb -v 192.168.1.2
``` ```
### HTTP头部分析 ### HTTP头部分析
@@ -149,7 +149,7 @@ curl -s -I http://192.168.1.2
curl -s -I -k https://192.168.1.2 curl -s -I -k https://192.168.1.2
# 获取完整响应 # 获取完整响应
@@ -159,15 +159,15 @@ curl -s -L -k https://192.168.1.2 | head -50
``` ```
--- ---
## 🔐 SSH安全配置检查 ## 🔐 SSH安全配置检查
### SSH信息收集 ### SSH信息收集
@@ -177,19 +177,19 @@ curl -s -L -k https://192.168.1.2 | head -50
nmap -sC -p22 192.168.1.2 -oN /tmp/ssh_nmap.txt nmap -sC -p22 192.168.1.2 -oN /tmp/ssh_nmap.txt
# SSH连接测试 # SSH连接测试
timeout 10 nc -zv 192.168.1.2 22 timeout 10 nc -zv 192.168.1.2 22
# SSH版本识别 # SSH版本识别
curl -s telnet://192.168.1.2:22 | head -3 curl -s telnet://192.168.1.2:22 | head -3
# 基础认证测试 (需要SSH-audit如未安装) # 基础认证测试 (需要SSH-audit如未安装)
@@ -197,15 +197,15 @@ curl -s telnet://192.168.1.2:22 | head -3
``` ```
--- ---
## 📁 文件共享服务分析 ## 📁 文件共享服务分析
### SMB/Samba评估 ### SMB/Samba评估
@@ -215,19 +215,19 @@ curl -s telnet://192.168.1.2:22 | head -3
smbclient -L //192.168.1.2 -N smbclient -L //192.168.1.2 -N
# 详细Samba信息收集 # 详细Samba信息收集
enum4linux -a 192.168.1.2 > /tmp/smb_enum.txt enum4linux -a 192.168.1.2 > /tmp/smb_enum.txt
# RPC服务探测 # RPC服务探测
rpcclient -U "" -N -c srvinfo 192.168.1.2 rpcclient -U "" -N -c srvinfo 192.168.1.2
# NBT协议信息 # NBT协议信息
@@ -235,7 +235,7 @@ timeout 15 nbtscan -r 192.168.1.2 > /tmp/nbtscan_result.txt
``` ```
### 共享访问测试 ### 共享访问测试
@@ -245,7 +245,7 @@ timeout 15 nbtscan -r 192.168.1.2 > /tmp/nbtscan_result.txt
smbclient -L //192.168.1.2/IPC$ -N smbclient -L //192.168.1.2/IPC$ -N
# 尝试列出共享 # 尝试列出共享
@@ -253,15 +253,15 @@ smbstatus --shares 2>/dev/null
``` ```
--- ---
## 🔧 系统工具快速诊断 ## 🔧 系统工具快速诊断
### 基础连接测试 ### 基础连接测试
@@ -275,7 +275,7 @@ timeout 15 bash -c '</dev/tcp/192.168.1.2/80 && echo "HTTP开放"'
timeout 15 bash -c '</dev/tcp/192.168.1.2/443 && echo "HTTPS开放"' timeout 15 bash -c '</dev/tcp/192.168.1.2/443 && echo "HTTPS开放"'
# 批处理端口状态检查 # 批处理端口状态检查
@@ -287,15 +287,15 @@ done
``` ```
--- ---
## 📊 结果文件结构 ## 📊 结果文件结构
### 生成报告与日志 ### 生成报告与日志
@@ -319,15 +319,15 @@ done
``` ```
--- ---
## ⚙️ 系统工具位置确认 ## ⚙️ 系统工具位置确认
### 验证可用工具 ### 验证可用工具
@@ -337,7 +337,7 @@ done
ls -la /usr/bin/ | grep -E "(nmap|nikto|dirb|gobuster|hydra|nc|curl)" ls -la /usr/bin/ | grep -E "(nmap|nikto|dirb|gobuster|hydra|nc|curl)"
# 确认工具版本 # 确认工具版本
@@ -351,15 +351,15 @@ gobuster --version
``` ```
--- ---
## 🔄 进阶使用场景 ## 🔄 进阶使用场景
### 自动化批量扫描 ### 自动化批量扫描
@@ -369,7 +369,7 @@ gobuster --version
# 批量扫描脚本示例 # 批量扫描脚本示例
IP="192.168.1.2" IP="192.168.1.2"
@@ -377,29 +377,29 @@ DATE=$(date +%Y%m%d_%H%M%S)
OUTPUT_DIR="/tmp/security_scan_${IP}_${DATE}" OUTPUT_DIR="/tmp/security_scan_${IP}_${DATE}"
mkdir -p $OUTPUT_DIR mkdir -p $OUTPUT_DIR
# 基础信息收集 # 基础信息收集
nmap -sV -O $IP -oN "$OUTPUT_DIR/nmap_baseline.txt" nmap -sV -O $IP -oN "$OUTPUT_DIR/nmap_baseline.txt"
# 详细漏洞扫描 # 详细漏洞扫描
nmap -sS -sU -sV --script vuln $IP -oN "$OUTPUT_DIR/nmap_vuln.txt" nmap -sS -sU -sV --script vuln $IP -oN "$OUTPUT_DIR/nmap_vuln.txt"
# Web专项扫描 # Web专项扫描
nikto -h http://$IP -output "$OUTPUT_DIR/nikto_http.txt" nikto -h http://$IP -output "$OUTPUT_DIR/nikto_http.txt"
# 目录爆破 # 目录爆破
@@ -407,31 +407,31 @@ gobuster dir -u http://$IP -w /usr/share/wordlists/dirb/common.txt \
-q -o "$OUTPUT_DIR/gobuster.txt" -q -o "$OUTPUT_DIR/gobuster.txt"
echo "扫描完成,结果保存在: $OUTPUT_DIR" echo "扫描完成,结果保存在: $OUTPUT_DIR"
``` ```
--- ---
## 📝 使用注意事项 ## 📝 使用注意事项
### 系统权限需求 ### 系统权限需求
- **普通权限**: nmap基础扫描、curl、nc - **普通权限**: nmap基础扫描、curl、nc
- **root权限**: 完整端口扫描 (-p-), OS指纹识别 (-O) - **root权限**: 完整端口扫描 (-p-), OS指纹识别 (-O)
- **网络权限**: 确保防火墙允许扫描流量
- **网络权限**: 确保防火墙允许扫描流量
### 扫描参数调优 ### 扫描参数调优
@@ -441,13 +441,13 @@ echo "扫描完成,结果保存在: $OUTPUT_DIR"
nmap -T2 -sV --top-ports 1000 192.168.1.2 nmap -T2 -sV --top-ports 1000 192.168.1.2
# 高并发快速扫描 # 高并发快速扫描
nmap -T4 --min-rate 1000 --max-retries 2 192.168.1.2 nmap -T4 --min-rate 1000 --max-retries 2 192.168.1.2
# 精确版本检测 # 精确版本检测
@@ -455,7 +455,7 @@ nmap -sV --version-intensity 9 192.168.1.2
``` ```
### 防火墙逃逸技巧 ### 防火墙逃逸技巧
@@ -467,15 +467,15 @@ nmap -sS -sF -sX --host-timeout 300 192.168.1.2
``` ```
--- ---
## 🎯 特定场景组合命令 ## 🎯 特定场景组合命令
### 快速安全检查 ### 快速安全检查
@@ -491,7 +491,7 @@ nikto -h 192.168.1.2 -output /tmp/quick_nikto.txt
``` ```
### 深度安全审计 ### 深度安全审计
@@ -507,7 +507,7 @@ nmap -sS -sU -sV -O -A \
-p- 192.168.1.2 -p- 192.168.1.2
# 同时进行多工具并行扫描 # 同时进行多工具并行扫描
@@ -525,38 +525,38 @@ wait
``` ```
--- ---
## 📋 命令速查表 ## 📋 命令速查表
| 工具 | 核心命令 | 用途 |
|------|----------|------| | 工具 | 核心命令 | 用途 |
| nmap | `nmap -sS -sV 192.168.1.2` | 基础端口与服务发现 | |------|----------|------|
| dirb | `dirb http://192.168.1.2` | Web目录枚举 | | nmap | `nmap -sS -sV 192.168.1.2` | 基础端口与服务发现 |
| nikto | `nikto -h 192.168.1.2` | Web漏洞扫描 | | dirb | `dirb http://192.168.1.2` | Web目录枚举 |
| gobuster | `gobuster dir -u http://192.168.1.2 -w [字典]` | 快速目录发现 | | nikto | `nikto -h 192.168.1.2` | Web漏洞扫描 |
| smbclient | `smbclient -L //192.168.1.2 -N` | SMB共享发现 | | gobuster | `gobuster dir -u http://192.168.1.2 -w [字典]` | 快速目录发现 |
| sslyze | `sslyze 192.168.1.2:443` | SSL/TLS配置分析 | | smbclient | `smbclient -L //192.168.1.2 -N` | SMB共享发现 |
| sslyze | `sslyze 192.168.1.2:443` | SSL/TLS配置分析 |
| enum4linux | `enum4linux -a 192.168.1.2` | Windows信息枚举 |
| enum4linux | `enum4linux -a 192.168.1.2` | Windows信息枚举 |
--- ---
**使用提示**: 建议在测试环境中先验证这些命令的影响,然后应用到生产环境监控系统。
**使用提示**: 建议在测试环境中先验证这些命令的影响,然后应用到生产环境监控系统。

View File

@@ -12,12 +12,12 @@ navigation:
- **低功耗随身“盒子”**U 盘大小,插充电宝就能跑 8 h现场测试不易被发现。 - **低功耗随身“盒子”**U 盘大小,插充电宝就能跑 8 h现场测试不易被发现。
- **多元化玩法**:可以当 APFake-Wi-Fi、HID 攻击机P4wnP1、其他载荷平台。 - **多元化玩法**:可以当 APFake-Wi-Fi、HID 攻击机P4wnP1、其他载荷平台。
树莓派4B 一个,此物曾经可以**理财** ,价格一度涨到离谱. 树莓派4B 一个,此物曾经可以**理财** ,价格一度涨到离谱.
平价的时候买了一个,玩了多年,换过好几个3D打印的外壳,图中这个最是满意. 平价的时候买了一个,玩了多年,换过好几个3D打印的外壳,图中这个最是满意.
安装klipper给3D 打印机做过**上位机**, 安装klipper给3D 打印机做过**上位机**,
也做过 无人机的**图传接收端**, 也做过 无人机的**图传接收端**,
刷过开源游戏系统当过**游戏机**, 刷过开源游戏系统当过**游戏机**,
近一年来安装开源的 **Coolify** 项目,做控制端管理部署几个云服务器. 近一年来安装开源的 **Coolify** 项目,做控制端管理部署几个云服务器.
绝对是物尽其用了. 绝对是物尽其用了.
## 安装 ## 安装
@@ -53,4 +53,4 @@ sudo apt update && sudo apt upgrade -y
![image.png](https://lijue-me.oss-cn-chengdu.aliyuncs.com/20250805213607111.png) ![image.png](https://lijue-me.oss-cn-chengdu.aliyuncs.com/20250805213607111.png)
![image.png](https://lijue-me.oss-cn-chengdu.aliyuncs.com/20250805232800775.png) ![image.png](https://lijue-me.oss-cn-chengdu.aliyuncs.com/20250805232800775.png)
这样, Kali 就安好了,很**可拷**,**很刑**的. 这样, Kali 就安好了,很**可拷**,**很刑**的.

View File

@@ -12,12 +12,12 @@ navigation:
- **低功耗随身“盒子”**U 盘大小,插充电宝就能跑 8 h现场测试不易被发现。 - **低功耗随身“盒子”**U 盘大小,插充电宝就能跑 8 h现场测试不易被发现。
- **多元化玩法**:可以当 APFake-Wi-Fi、HID 攻击机P4wnP1、其他载荷平台。 - **多元化玩法**:可以当 APFake-Wi-Fi、HID 攻击机P4wnP1、其他载荷平台。
树莓派4B 一个,此物曾经可以**理财** ,价格一度涨到离谱. 树莓派4B 一个,此物曾经可以**理财** ,价格一度涨到离谱.
平价的时候买了一个,玩了多年,换过好几个3D打印的外壳,图中这个最是满意. 平价的时候买了一个,玩了多年,换过好几个3D打印的外壳,图中这个最是满意.
安装klipper给3D 打印机做过**上位机**, 安装klipper给3D 打印机做过**上位机**,
也做过 无人机的**图传接收端**, 也做过 无人机的**图传接收端**,
刷过开源游戏系统当过**游戏机**, 刷过开源游戏系统当过**游戏机**,
近一年来安装开源的 **Coolify** 项目,做控制端管理部署几个云服务器. 近一年来安装开源的 **Coolify** 项目,做控制端管理部署几个云服务器.
绝对是物尽其用了. 绝对是物尽其用了.
## 安装 ## 安装
@@ -53,4 +53,4 @@ sudo apt update && sudo apt upgrade -y
![image.png](https://lijue-me.oss-cn-chengdu.aliyuncs.com/20250805213607111.png) ![image.png](https://lijue-me.oss-cn-chengdu.aliyuncs.com/20250805213607111.png)
![image.png](https://lijue-me.oss-cn-chengdu.aliyuncs.com/20250805232800775.png) ![image.png](https://lijue-me.oss-cn-chengdu.aliyuncs.com/20250805232800775.png)
这样, Kali 就安好了,很**可拷**,**很刑**的. 这样, Kali 就安好了,很**可拷**,**很刑**的.

View File

@@ -4,18 +4,18 @@ description: Supabase - 添加国内阿里云短信、微信扫码认证登录
date: 2025-07-15 date: 2025-07-15
img: https://lijue-me.oss-cn-chengdu.aliyuncs.com/20250701003525007.png img: https://lijue-me.oss-cn-chengdu.aliyuncs.com/20250701003525007.png
navigation: navigation:
icon: simple-icons:alibabacloud icon: simple-icons:alibabacloud
--- ---
###### 给 Supabase 添加一项新的功能 ###### 给 Supabase 添加一项新的功能
Supabase 自身的鉴权组件是社区开源项目 GoTrue ,由 GO 语言开发 Supabase 自身的鉴权组件是社区开源项目 GoTrue ,由 GO 语言开发
Supabase 提供的短信验证都是国外的厂商,并不适应国内环境 Supabase 提供的短信验证都是国外的厂商,并不适应国内环境
##### 实现 ##### 实现
单独把 Gotrue 仓库克隆下来,添加修改需要的功能 单独把 Gotrue 仓库克隆下来,添加修改需要的功能
测试好后打包为 Docker推到私有库 测试好后打包为 Docker推到私有库
修改 Supabase 的 Docker Compose 文件image 改为私有库镜像并拉取! 修改 Supabase 的 Docker Compose 文件image 改为私有库镜像并拉取!
##### 并没有提交 PR直接放在仓库具体使用方法看仓库说明 ##### 并没有提交 PR直接放在仓库具体使用方法看仓库说明
###### [Github 仓库地址](https://github.com/estel-li/supabase_auth_aliyun_wechat) ###### [Github 仓库地址](https://github.com/estel-li/supabase_auth_aliyun_wechat)
@@ -26,25 +26,25 @@ navigation:
### 1. 阿里云短信服务 (Aliyun SMS) ### 1. 阿里云短信服务 (Aliyun SMS)
- ✅ 完整的阿里云短信 API 集成 - ✅ 完整的阿里云短信 API 集成
- ✅ 支持 HMAC-SHA1 签名验证 - ✅ 支持 HMAC-SHA1 签名验证
- ✅ 支持中文短信签名 - ✅ 支持中文短信签名
- ✅ 支持 OTP 验证码发送 - ✅ 支持 OTP 验证码发送
- ✅ 完整的错误处理和响应解析
- ✅ 完整的错误处理和响应解析
### 2. 华为云短信服务 (HuaweiCloud SMS) ### 2. 华为云短信服务 (HuaweiCloud SMS)
- ✅ 添加华为云短信 API 集成 - ✅ 添加华为云短信 API 集成
- ✅ 完整的 `VerifyOTP` 方法实现 - ✅ 完整的 `VerifyOTP` 方法实现
- ✅ 完善的接口功能支持 - ✅ 完善的接口功能支持
#### 阿里云短信配置 #### 阿里云短信配置

View File

@@ -4,10 +4,10 @@ description: Coolify是什么
date: 2025-07-14 date: 2025-07-14
img: https://lijue-me.oss-cn-chengdu.aliyuncs.com/20250628122847084.png img: https://lijue-me.oss-cn-chengdu.aliyuncs.com/20250628122847084.png
navigation: navigation:
icon: simple-icons:chai icon: simple-icons:chai
--- ---
# 概述 # 概述
这是一份提供给AI大模型的Python代码规范与编程标准可以有效提高Cursor等大模型对Python项目的编写能力。 这是一份提供给AI大模型的Python代码规范与编程标准可以有效提高Cursor等大模型对Python项目的编写能力。
--- ---
description: Python开发综合指南涵盖代码组织、性能、安全性、测试等内容。这些规则旨在促进可维护、高效且安全的Python代码库。 description: Python开发综合指南涵盖代码组织、性能、安全性、测试等内容。这些规则旨在促进可维护、高效且安全的Python代码库。
@@ -26,24 +26,24 @@ globs: *.py
* **src布局** 考虑使用`src`目录分离应用代码和项目级文件setup.py、requirements.txt等避免导入冲突并明确项目边界 * **src布局** 考虑使用`src`目录分离应用代码和项目级文件setup.py、requirements.txt等避免导入冲突并明确项目边界
* **典型项目结构:** * **典型项目结构:**
project_name/ project_name/
├── src/ ├── src/
│ ├── package_name/ │ ├── package_name/
│ │ ├── __init__.py │ │ ├── __init__.py
│ │ ├── module1.py │ │ ├── module1.py
│ │ ├── module2.py │ │ ├── module2.py
│ ├── main.py # 入口文件 │ ├── main.py # 入口文件
├── tests/ ├── tests/
│ ├── __init__.py │ ├── __init__.py
│ ├── test_module1.py │ ├── test_module1.py
│ ├── test_module2.py │ ├── test_module2.py
├── docs/ ├── docs/
│ ├── conf.py │ ├── conf.py
│ ├── index.rst │ ├── index.rst
├── .gitignore ├── .gitignore
├── pyproject.toml 或 setup.py ├── pyproject.toml 或 setup.py
├── README.md ├── README.md
├── requirements.txt 或 requirements-dev.txt ├── requirements.txt 或 requirements-dev.txt
### 1.2 文件命名规范 ### 1.2 文件命名规范
@@ -187,4 +187,4 @@ globs: *.py
* **自动化测试:** 每次提交自动运行测试套件 * **自动化测试:** 每次提交自动运行测试套件
* **代码质量门禁:** 集成静态分析工具到流水线 * **代码质量门禁:** 集成静态分析工具到流水线
遵循这些规范和最佳实践开发者能够构建出更健壮、可维护且安全的Python应用。 遵循这些规范和最佳实践开发者能够构建出更健壮、可维护且安全的Python应用。

View File

@@ -4,10 +4,10 @@ description: 这是一份提供给AI大模型的Python代码规范与编程标
date: 2025-07-12 date: 2025-07-12
img: https://lijue-me.oss-cn-chengdu.aliyuncs.com/20250624130616733.png img: https://lijue-me.oss-cn-chengdu.aliyuncs.com/20250624130616733.png
navigation: navigation:
icon: simple-icons:python icon: simple-icons:python
--- ---
# 概述 # 概述
这是一份提供给AI大模型的Python代码规范与编程标准可以有效提高Cursor等大模型对Python项目的编写能力。 这是一份提供给AI大模型的Python代码规范与编程标准可以有效提高Cursor等大模型对Python项目的编写能力。
--- ---
description: Python开发综合指南涵盖代码组织、性能、安全性、测试等内容。这些规则旨在促进可维护、高效且安全的Python代码库。 description: Python开发综合指南涵盖代码组织、性能、安全性、测试等内容。这些规则旨在促进可维护、高效且安全的Python代码库。
@@ -26,24 +26,24 @@ globs: *.py
* **src布局** 考虑使用`src`目录分离应用代码和项目级文件setup.py、requirements.txt等避免导入冲突并明确项目边界 * **src布局** 考虑使用`src`目录分离应用代码和项目级文件setup.py、requirements.txt等避免导入冲突并明确项目边界
* **典型项目结构:** * **典型项目结构:**
project_name/ project_name/
├── src/ ├── src/
│ ├── package_name/ │ ├── package_name/
│ │ ├── __init__.py │ │ ├── __init__.py
│ │ ├── module1.py │ │ ├── module1.py
│ │ ├── module2.py │ │ ├── module2.py
│ ├── main.py # 入口文件 │ ├── main.py # 入口文件
├── tests/ ├── tests/
│ ├── __init__.py │ ├── __init__.py
│ ├── test_module1.py │ ├── test_module1.py
│ ├── test_module2.py │ ├── test_module2.py
├── docs/ ├── docs/
│ ├── conf.py │ ├── conf.py
│ ├── index.rst │ ├── index.rst
├── .gitignore ├── .gitignore
├── pyproject.toml 或 setup.py ├── pyproject.toml 或 setup.py
├── README.md ├── README.md
├── requirements.txt 或 requirements-dev.txt ├── requirements.txt 或 requirements-dev.txt
### 1.2 文件命名规范 ### 1.2 文件命名规范
@@ -187,4 +187,4 @@ globs: *.py
* **自动化测试:** 每次提交自动运行测试套件 * **自动化测试:** 每次提交自动运行测试套件
* **代码质量门禁:** 集成静态分析工具到流水线 * **代码质量门禁:** 集成静态分析工具到流水线
遵循这些规范和最佳实践开发者能够构建出更健壮、可维护且安全的Python应用。 遵循这些规范和最佳实践开发者能够构建出更健壮、可维护且安全的Python应用。

View File

@@ -7,7 +7,7 @@ navigation:
icon: simple-icons:nuxtdotjs icon: simple-icons:nuxtdotjs
--- ---
## 概述 ## 概述
这是一份提供给AI大模型的Nuxt3框架规范、编程标准可以有效提高Cursor等大模型对Nuxt.js框架的编写能力。 这是一份提供给AI大模型的Nuxt3框架规范、编程标准可以有效提高Cursor等大模型对Nuxt.js框架的编写能力。
--- ---
description: 本规则为 Nuxt.js 项目提供全面的最佳实践和编码标准,涵盖代码组织、性能、安全性、测试和常见陷阱。旨在确保 Nuxt.js 应用程序的可维护性、可扩展性和安全性。 description: 本规则为 Nuxt.js 项目提供全面的最佳实践和编码标准,涵盖代码组织、性能、安全性、测试和常见陷阱。旨在确保 Nuxt.js 应用程序的可维护性、可扩展性和安全性。
@@ -210,4 +210,4 @@ globs: *.vue,*.js,*.ts,*.mjs,*.mts,*.jsx,*.tsx,*.config.js,*.config.ts
- **持续集成 (CI)** 使用 Jenkins、GitLab CI 或 GitHub Actions 等 CI 工具自动化构建和测试过程。 - **持续集成 (CI)** 使用 Jenkins、GitLab CI 或 GitHub Actions 等 CI 工具自动化构建和测试过程。
- **持续部署 (CD)** 使用 CD 工具自动化部署过程。 - **持续部署 (CD)** 使用 CD 工具自动化部署过程。
通过遵循这些最佳实践,您可以构建强健、可维护且可扩展的 Nuxt.js 应用程序。 通过遵循这些最佳实践,您可以构建强健、可维护且可扩展的 Nuxt.js 应用程序。

View File

@@ -18,12 +18,12 @@ Swap交换分区是 Linux 系统用来扩展内存的一种机制。当物
--- ---
## **2. 查看当前 Swap 配置** ## **2. 查看当前 Swap 配置**
**检查当前是否已启用 Swap** **检查当前是否已启用 Swap**
```bash ```bash
swapon --show swapon --show
``` ```
- **无输出**:表示未配置 Swap 分区 - **无输出**:表示未配置 Swap 分区
- **有输出**:显示已启用的 Swap 设备及其大小 - **有输出**:显示已启用的 Swap 设备及其大小
--- ---
@@ -68,8 +68,8 @@ cat /etc/fstab | grep swap
--- ---
## **4. 调整内存管理策略(可选)** ## **4. 调整内存管理策略(可选)**
默认情况下Linux 倾向于使用物理内存而非 Swap。 默认情况下Linux 倾向于使用物理内存而非 Swap。
若希望 **减少 Swap 使用**(避免频繁 I/O可调整 `vm.swappiness`推荐值10~60 若希望 **减少 Swap 使用**(避免频繁 I/O可调整 `vm.swappiness`推荐值10~60
```bash ```bash
# 查看当前值默认60 # 查看当前值默认60
cat /proc/sys/vm/swappiness cat /proc/sys/vm/swappiness
@@ -80,10 +80,10 @@ sudo sysctl vm.swappiness=10
# 永久生效 # 永久生效
echo "vm.swappiness=10" >> /etc/sysctl.conf echo "vm.swappiness=10" >> /etc/sysctl.conf
``` ```
> **参数说明** > **参数说明**
> - `0`:尽量不使用 Swap可能导致 OOM > - `0`:尽量不使用 Swap可能导致 OOM
> - `10`:低内存时少量使用 > - `10`:低内存时少量使用
> - `60`:默认值 > - `60`:默认值
--- ---
@@ -97,13 +97,13 @@ sed -i '/swapfile/d' /etc/fstab # 移除 fstab 中的配置
--- ---
## **6. 云服务器ECS注意事项** ## **6. 云服务器ECS注意事项**
- **普通云盘**:不建议用 Swap因其 I/O 性能较差,易引发性能问题 - **普通云盘**:不建议用 Swap因其 I/O 性能较差,易引发性能问题
- **SSD/高效云盘**:可适当启用 Swap但要避免频繁交换 - **SSD/高效云盘**:可适当启用 Swap但要避免频繁交换
- **最优方案****升级实例规格**,直接增加物理内存 - **最优方案****升级实例规格**,直接增加物理内存
--- ---
🎯 **总结** 🎯 **总结**
- **Swap 是临时方案**,长期内存不足仍需扩容物理内存 - **Swap 是临时方案**,长期内存不足仍需扩容物理内存
- **监控 Swap 使用**,避免频繁触发磁盘 I/O - **监控 Swap 使用**,避免频繁触发磁盘 I/O
- **高性能应用建议禁用 Swap**(如 Redis、MySQL - **高性能应用建议禁用 Swap**(如 Redis、MySQL

View File

@@ -29,9 +29,9 @@ navigation:
上个月Appwrite发布的**Sites功能**让我眼前一亮——这个对标Vercel的新功能完全改变了我对它的认知。经过重新评估 上个月Appwrite发布的**Sites功能**让我眼前一亮——这个对标Vercel的新功能完全改变了我对它的认知。经过重新评估
✅ 更轻量的架构 ✅ 更轻量的架构
✅ 恰到好处的功能集 ✅ 恰到好处的功能集
✅ 持续创新的能力 ✅ 持续创新的能力
## 迁移计划 ## 迁移计划

View File

@@ -71,4 +71,4 @@ Appwrite 所有容器总内存占用1,761.91 MiB ≈ 1.72 GiB
- 各种辅助工具和可视化界面 - 各种辅助工具和可视化界面
所以 Appwrite 项目精确占用约 1.72 GB 内存。 所以 Appwrite 项目精确占用约 1.72 GB 内存。
``` ```

View File

@@ -9,10 +9,10 @@ navigation:
# 一启动容器时加上“—add-host”参数 # 一启动容器时加上“—add-host”参数
``` ```
docker run docker run
--add-host='lijue.net:127.0.0.1' --add-host='lijue.net:127.0.0.1'
--add-host='www.lijue.net:192.168.1.1' --add-host='www.lijue.net:192.168.1.1'
--name hello-docker --name hello-docker
-it reg.lijue.net/public/hello-docker:latest -it reg.lijue.net/public/hello-docker:latest
``` ```
@@ -27,4 +27,4 @@ docker run
5. `extra_hosts:` 5. `extra_hosts:`
6. `- 'www.lijue.net:192.168.1.1'` 6. `- 'www.lijue.net:192.168.1.1'`
7. `- 'lijue.net:127.0.0.1'` 7. `- 'lijue.net:127.0.0.1'`
``` ```

View File

@@ -4,12 +4,12 @@ description: 如何在MySQL中忽略表名的大小写
date: 2025-06-01 date: 2025-06-01
img: https://lijue-me.oss-cn-chengdu.aliyuncs.com/20250619124538532.png img: https://lijue-me.oss-cn-chengdu.aliyuncs.com/20250619124538532.png
navigation: navigation:
icon: simple-icons:mysql icon: simple-icons:mysql
--- ---
在 MySQL 中,默认情况下表名是大小写敏感的。但是你可以通过设置来实现忽略表名的大小写。有两种方法可以做到这一点: 在 MySQL 中,默认情况下表名是大小写敏感的。但是你可以通过设置来实现忽略表名的大小写。有两种方法可以做到这一点:
方法一:修改配置文件 方法一:修改配置文件
编辑 MySQL 的配置文件 my.cnf 或 my.ini具体文件名取决于操作系统和 MySQL 版本),在 [mysqld] 部分添加以下行: 编辑 MySQL 的配置文件 my.cnf 或 my.ini具体文件名取决于操作系统和 MySQL 版本),在 [mysqld] 部分添加以下行:
``` ```
lower_case_table_names = 1 lower_case_table_names = 1
@@ -22,7 +22,7 @@ lower_case_table_names = 1
设置为 1将表名存储为小写并在比较表名时不区分大小写。 设置为 1将表名存储为小写并在比较表名时不区分大小写。
设置为 2将表名存储为小写并在比较表名时区分大小写仅在非 Windows 环境下可用)。 设置为 2将表名存储为小写并在比较表名时区分大小写仅在非 Windows 环境下可用)。
方法二:动态设置 方法二:动态设置
如果无法修改配置文件,你可以在 MySQL 启动后,使用以下命令动态设置: 如果无法修改配置文件,你可以在 MySQL 启动后,使用以下命令动态设置:
``` ```
SET GLOBAL lower_case_table_names = 1; SET GLOBAL lower_case_table_names = 1;
@@ -31,5 +31,5 @@ SET GLOBAL lower_case_table_names = 1;
请注意,这种方式在 MySQL 重启后会失效,除非再次设置。 请注意,这种方式在 MySQL 重启后会失效,除非再次设置。
在任何情况下,修改这个设置都需要谨慎考虑,因为它可能会影响现有的数据库和应用程序。在进行此类更改之前,请务必备份数据库,并确保了解潜在的影响和风险。 在任何情况下,修改这个设置都需要谨慎考虑,因为它可能会影响现有的数据库和应用程序。在进行此类更改之前,请务必备份数据库,并确保了解潜在的影响和风险。

View File

@@ -86,7 +86,7 @@ npm -v
--- ---
### **安装 pnpm、yarn、bun、cpnm** ### **安装 pnpm、yarn、bun、cpnm**
如果没有配置镜像加速,先配置加速: 如果没有配置镜像加速,先配置加速:
```bash ```bash
npm config set registry https://registry.npmmirror.com npm config set registry https://registry.npmmirror.com
@@ -99,7 +99,7 @@ sudo npm install -g cnpm --registry=https://registry.npmmirror.com
# 查看安装情况 # 查看安装情况
ls -la /usr/local/lib/nodejs/node-v22.16.0-linux-x64/bin ls -la /usr/local/lib/nodejs/node-v22.16.0-linux-x64/bin
# 创建 cnpm 软链 # 创建 cnpm 软链
sudo ln -s /usr/local/lib/nodejs/node-v22.16.0-linux-x64/bin/cnpm /usr/bin/cnpm sudo ln -s /usr/local/lib/nodejs/node-v22.16.0-linux-x64/bin/cnpm /usr/bin/cnpm
# 查看版本 # 查看版本
cnpm -v cnpm -v
``` ```
@@ -111,7 +111,7 @@ sudo npm install -g pnpm
# 查看安装情况 # 查看安装情况
ls -la /usr/local/lib/nodejs/node-v22.16.0-linux-x64/bin ls -la /usr/local/lib/nodejs/node-v22.16.0-linux-x64/bin
# 创建 pnpm 软链 # 创建 pnpm 软链
sudo ln -s /usr/local/lib/nodejs/node-v22.16.0-linux-x64/bin/npx /usr/bin/pnpm sudo ln -s /usr/local/lib/nodejs/node-v22.16.0-linux-x64/bin/npx /usr/bin/pnpm
# 查看版本 # 查看版本
pnpm -v pnpm -v
``` ```
@@ -129,7 +129,7 @@ yarn -v
``` ```
#### **安装 bun** #### **安装 bun**
Linux用户-安装Bun需要解压缩包。使用 `sudo apt install unzip` 安装解压包。强烈建议使用5.6或更高版本的内核但最低版本为5.1。使用 `uname -r` 检查内核版本。 Linux用户-安装Bun需要解压缩包。使用 `sudo apt install unzip` 安装解压包。强烈建议使用5.6或更高版本的内核但最低版本为5.1。使用 `uname -r` 检查内核版本。
```bash ```bash
# 全局安装 # 全局安装

View File

@@ -34,9 +34,9 @@ PermitRootLogin no
PasswordAuthentication no # 强制使用密钥登录 PasswordAuthentication no # 强制使用密钥登录
``` ```
> ⚠️ **关键提示** > ⚠️ **关键提示**
> 1. 操作前必须配置好SSH密钥否则会锁定服务器 > 1. 操作前必须配置好SSH密钥否则会锁定服务器
> 2. 执行后重载服务:`sudo systemctl reload ssh` > 2. 执行后重载服务:`sudo systemctl reload ssh`
--- ---
@@ -90,12 +90,12 @@ sudo dpkg-reconfigure -plow unattended-upgrades
sudo systemctl status unattended-upgrades sudo systemctl status unattended-upgrades
``` ```
> 🔧 **配置文件优化** (`/etc/apt/apt.conf.d/50unattended-upgrades`) > 🔧 **配置文件优化** (`/etc/apt/apt.conf.d/50unattended-upgrades`)
> ```json > ```json
> Unattended-Upgrade::Remove-Unused-Dependencies "true"; > Unattended-Upgrade::Remove-Unused-Dependencies "true";
> Unattended-Upgrade::Automatic-Reboot "true"; > Unattended-Upgrade::Automatic-Reboot "true";
> Unattended-Upgrade::Automatic-Reboot-Time "03:00"; > Unattended-Upgrade::Automatic-Reboot-Time "03:00";
> ``` > ```
--- ---
@@ -189,7 +189,7 @@ sudo ss -tunlp
--- ---
**最终安全检查清单** **最终安全检查清单**
```bash ```bash
echo "[+] SSH 配置" echo "[+] SSH 配置"
sudo sshd -t && grep -E "PermitRoot|PasswordAuth" /etc/ssh/sshd_config sudo sshd -t && grep -E "PermitRoot|PasswordAuth" /etc/ssh/sshd_config
@@ -200,14 +200,14 @@ sudo ufw status
echo "[]+ 更新状态" echo "[]+ 更新状态"
sudo unattended-upgrades --dry-run sudo unattended-upgrades --dry-run
``` ```
![服务器安全架构](https://example.com/img/debian-security-layers.png) ![服务器安全架构](https://example.com/img/debian-security-layers.png)
*(安全层示意图:网络防火墙→系统加固→应用防护)* *(安全层示意图:网络防火墙→系统加固→应用防护)*
> 🔐 **维护建议** > 🔐 **维护建议**
> 1. 每月执行:`sudo lynis audit system` (安装:`apt install lynis`) > 1. 每月执行:`sudo lynis audit system` (安装:`apt install lynis`)
> 2. 每季度更新所有SSL证书即使未到期 > 2. 每季度更新所有SSL证书即使未到期
> 3. 使用自动配置管理工具如Ansible维护服务器状态 > 3. 使用自动配置管理工具如Ansible维护服务器状态
**文档版本**: v1.2 **文档版本**: v1.2
**测试环境**: Debian 12.5 (Kernel 6.1.x) 云服务器 **测试环境**: Debian 12.5 (Kernel 6.1.x) 云服务器
**最后更新**: 2024-06-15 **最后更新**: 2024-06-15

View File

@@ -34,9 +34,9 @@ PermitRootLogin no
PasswordAuthentication no # 强制使用密钥登录 PasswordAuthentication no # 强制使用密钥登录
``` ```
> ⚠️ **关键提示** > ⚠️ **关键提示**
> 1. 操作前必须配置好SSH密钥否则会锁定服务器 > 1. 操作前必须配置好SSH密钥否则会锁定服务器
> 2. 执行后重载服务:`sudo systemctl reload ssh` > 2. 执行后重载服务:`sudo systemctl reload ssh`
--- ---
@@ -90,12 +90,12 @@ sudo dpkg-reconfigure -plow unattended-upgrades
sudo systemctl status unattended-upgrades sudo systemctl status unattended-upgrades
``` ```
> 🔧 **配置文件优化** (`/etc/apt/apt.conf.d/50unattended-upgrades`) > 🔧 **配置文件优化** (`/etc/apt/apt.conf.d/50unattended-upgrades`)
> ```json > ```json
> Unattended-Upgrade::Remove-Unused-Dependencies "true"; > Unattended-Upgrade::Remove-Unused-Dependencies "true";
> Unattended-Upgrade::Automatic-Reboot "true"; > Unattended-Upgrade::Automatic-Reboot "true";
> Unattended-Upgrade::Automatic-Reboot-Time "03:00"; > Unattended-Upgrade::Automatic-Reboot-Time "03:00";
> ``` > ```
--- ---
@@ -189,7 +189,7 @@ sudo ss -tunlp
--- ---
**最终安全检查清单** **最终安全检查清单**
```bash ```bash
echo "[+] SSH 配置" echo "[+] SSH 配置"
sudo sshd -t && grep -E "PermitRoot|PasswordAuth" /etc/ssh/sshd_config sudo sshd -t && grep -E "PermitRoot|PasswordAuth" /etc/ssh/sshd_config
@@ -200,14 +200,14 @@ sudo ufw status
echo "[]+ 更新状态" echo "[]+ 更新状态"
sudo unattended-upgrades --dry-run sudo unattended-upgrades --dry-run
``` ```
![服务器安全架构](https://example.com/img/debian-security-layers.png) ![服务器安全架构](https://example.com/img/debian-security-layers.png)
*(安全层示意图:网络防火墙→系统加固→应用防护)* *(安全层示意图:网络防火墙→系统加固→应用防护)*
> 🔐 **维护建议** > 🔐 **维护建议**
> 1. 每月执行:`sudo lynis audit system` (安装:`apt install lynis`) > 1. 每月执行:`sudo lynis audit system` (安装:`apt install lynis`)
> 2. 每季度更新所有SSL证书即使未到期 > 2. 每季度更新所有SSL证书即使未到期
> 3. 使用自动配置管理工具如Ansible维护服务器状态 > 3. 使用自动配置管理工具如Ansible维护服务器状态
**文档版本**: v1.2 **文档版本**: v1.2
**测试环境**: Debian 12.5 (Kernel 6.1.x) 云服务器 **测试环境**: Debian 12.5 (Kernel 6.1.x) 云服务器
**最后更新**: 2024-06-15 **最后更新**: 2024-06-15

View File

@@ -34,9 +34,9 @@ PermitRootLogin no
PasswordAuthentication no # 强制使用密钥登录 PasswordAuthentication no # 强制使用密钥登录
``` ```
> ⚠️ **关键提示** > ⚠️ **关键提示**
> 1. 操作前必须配置好SSH密钥否则会锁定服务器 > 1. 操作前必须配置好SSH密钥否则会锁定服务器
> 2. 执行后重载服务:`sudo systemctl reload ssh` > 2. 执行后重载服务:`sudo systemctl reload ssh`
--- ---
@@ -90,12 +90,12 @@ sudo dpkg-reconfigure -plow unattended-upgrades
sudo systemctl status unattended-upgrades sudo systemctl status unattended-upgrades
``` ```
> 🔧 **配置文件优化** (`/etc/apt/apt.conf.d/50unattended-upgrades`) > 🔧 **配置文件优化** (`/etc/apt/apt.conf.d/50unattended-upgrades`)
> ```json > ```json
> Unattended-Upgrade::Remove-Unused-Dependencies "true"; > Unattended-Upgrade::Remove-Unused-Dependencies "true";
> Unattended-Upgrade::Automatic-Reboot "true"; > Unattended-Upgrade::Automatic-Reboot "true";
> Unattended-Upgrade::Automatic-Reboot-Time "03:00"; > Unattended-Upgrade::Automatic-Reboot-Time "03:00";
> ``` > ```
--- ---
@@ -189,7 +189,7 @@ sudo ss -tunlp
--- ---
**最终安全检查清单** **最终安全检查清单**
```bash ```bash
echo "[+] SSH 配置" echo "[+] SSH 配置"
sudo sshd -t && grep -E "PermitRoot|PasswordAuth" /etc/ssh/sshd_config sudo sshd -t && grep -E "PermitRoot|PasswordAuth" /etc/ssh/sshd_config
@@ -200,14 +200,14 @@ sudo ufw status
echo "[]+ 更新状态" echo "[]+ 更新状态"
sudo unattended-upgrades --dry-run sudo unattended-upgrades --dry-run
``` ```
![服务器安全架构](https://example.com/img/debian-security-layers.png) ![服务器安全架构](https://example.com/img/debian-security-layers.png)
*(安全层示意图:网络防火墙→系统加固→应用防护)* *(安全层示意图:网络防火墙→系统加固→应用防护)*
> 🔐 **维护建议** > 🔐 **维护建议**
> 1. 每月执行:`sudo lynis audit system` (安装:`apt install lynis`) > 1. 每月执行:`sudo lynis audit system` (安装:`apt install lynis`)
> 2. 每季度更新所有SSL证书即使未到期 > 2. 每季度更新所有SSL证书即使未到期
> 3. 使用自动配置管理工具如Ansible维护服务器状态 > 3. 使用自动配置管理工具如Ansible维护服务器状态
**文档版本**: v1.2 **文档版本**: v1.2
**测试环境**: Debian 12.5 (Kernel 6.1.x) 云服务器 **测试环境**: Debian 12.5 (Kernel 6.1.x) 云服务器
**最后更新**: 2024-06-15 **最后更新**: 2024-06-15

View File

@@ -23,13 +23,13 @@ B -- 万兆光口 --> C[PVE服务器<br>CX4121A网卡]
``` ```
### 硬件清单 ### 硬件清单
| **设备** | **规格** | **作用** | | **设备** | **规格** | **作用** |
|---------------------|-----------------------------------------|-----------------------| |---------------------|-----------------------------------------|-----------------------|
| 主测试端 | MacBook Air M4 + 雷电万兆网卡(AQC113) | Iperf3 Client端 | | 主测试端 | MacBook Air M4 + 雷电万兆网卡(AQC113) | Iperf3 Client端 |
| 交换机 | 水星S106E Pro | 万兆光/电转换枢纽 | | 交换机 | 水星S106E Pro | 万兆光/电转换枢纽 |
| 光转电模块 | AQR113光转电模块 | 连接交换机万兆光口 | | 光转电模块 | AQR113光转电模块 | 连接交换机万兆光口 |
| 被测服务端 | NAS (12500T+Q670) + CX4121A万兆网卡 | Iperf3 Server端 | | 被测服务端 | NAS (12500T+Q670) + CX4121A万兆网卡 | Iperf3 Server端 |
| 辅助设备 | 超六类网线/光纤跳线(按需) | 物理链路连接 | | 辅助设备 | 超六类网线/光纤跳线(按需) | 物理链路连接 |
``` ```
--- ---
@@ -38,19 +38,19 @@ B -- 万兆光口 --> C[PVE服务器<br>CX4121A网卡]
### 1. macOS端安装Client ### 1. macOS端安装Client
```bash ```bash
# 通过Homebrew安装iperf3 # 通过Homebrew安装iperf3
brew install iperf3 brew install iperf3
# 启动服务端监听(可选本地验证) # 启动服务端监听(可选本地验证)
iperf3 -s -p 5201 iperf3 -s -p 5201
``` ```
### 2. PVE服务端安装Server ### 2. PVE服务端安装Server
```bash ```bash
# Debian系系统安装 # Debian系系统安装
apt update && apt install iperf3 -y apt update && apt install iperf3 -y
# 启动服务端后台监听 # 启动服务端后台监听
iperf3 -s -D -p 5201 iperf3 -s -D -p 5201
``` ```
> ⚠️ **防火墙注意**: 确保5201端口开放 > ⚠️ **防火墙注意**: 确保5201端口开放
> `ufw allow 5201/tcp` (Debian/Ubuntu) > `ufw allow 5201/tcp` (Debian/Ubuntu)
@@ -124,10 +124,10 @@ ethtool -S enpXX | grep -E 'drop|error'
2. 减少并发线程总数(-P参数 2. 减少并发线程总数(-P参数
``` ```
![万兆测试拓扑示意图](https://example.com/img/10g-test-diagram.png) ![万兆测试拓扑示意图](https://example.com/img/10g-test-diagram.png)
*(示意图:实际连接需确保光模块端口匹配)* *(示意图:实际连接需确保光模块端口匹配)*
> 📌 **经验总结**水星S106E Pro需关闭"绿色节能"功能避免AQC113因节能策略降速。PVE虚拟机环境建议使用SR-IOV直通网卡减少虚拟化层开销。 > 📌 **经验总结**水星S106E Pro需关闭"绿色节能"功能避免AQC113因节能策略降速。PVE虚拟机环境建议使用SR-IOV直通网卡减少虚拟化层开销。
--- ---

File diff suppressed because it is too large Load Diff

View File

@@ -1,3 +1,3 @@
title: AI title: AI
description: AI 改变世界 description: AI 改变世界
icon: lucide-brain icon: devicon:streamlit

View File

@@ -1,3 +1,3 @@
title: 生活 title: 生活
description: 生活中一些有趣的事情 description: 生活中一些有趣的事情
icon: lucide-heart icon: devicon:love2d

View File

@@ -50,6 +50,7 @@
"remark-rehype": "^11.1.2" "remark-rehype": "^11.1.2"
}, },
"devDependencies": { "devDependencies": {
"@iconify-json/devicon": "^1.2.41",
"@iconify-json/lucide": "^1.2.57", "@iconify-json/lucide": "^1.2.57",
"@iconify-json/simple-icons": "^1.2.43", "@iconify-json/simple-icons": "^1.2.43",
"@nuxt/eslint": "^1.5.2", "@nuxt/eslint": "^1.5.2",

10
pnpm-lock.yaml generated
View File

@@ -60,6 +60,9 @@ importers:
specifier: ^11.1.2 specifier: ^11.1.2
version: 11.1.2 version: 11.1.2
devDependencies: devDependencies:
'@iconify-json/devicon':
specifier: ^1.2.41
version: 1.2.41
'@iconify-json/lucide': '@iconify-json/lucide':
specifier: ^1.2.57 specifier: ^1.2.57
version: 1.2.57 version: 1.2.57
@@ -889,6 +892,9 @@ packages:
resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==}
engines: {node: '>=18.18'} engines: {node: '>=18.18'}
'@iconify-json/devicon@1.2.41':
resolution: {integrity: sha512-4hCbtXRkdwbzemxVc7+6LQT0cOQaD1SHZpElhuV0YC5JfUqBu7T5ejRcjgim1lJO888Mj0WSp4th1eUhDEChUg==}
'@iconify-json/lucide@1.2.57': '@iconify-json/lucide@1.2.57':
resolution: {integrity: sha512-I1CIObdPBIL/9v75KKoyHWNhq+qqN6ef8+iJY4AVpHLtnRu0Vbp6K0TKcoYZ70U+EgiL6krEbFdcjK3+fwpfHQ==} resolution: {integrity: sha512-I1CIObdPBIL/9v75KKoyHWNhq+qqN6ef8+iJY4AVpHLtnRu0Vbp6K0TKcoYZ70U+EgiL6krEbFdcjK3+fwpfHQ==}
@@ -7673,6 +7679,10 @@ snapshots:
'@humanwhocodes/retry@0.4.3': {} '@humanwhocodes/retry@0.4.3': {}
'@iconify-json/devicon@1.2.41':
dependencies:
'@iconify/types': 2.0.0
'@iconify-json/lucide@1.2.57': '@iconify-json/lucide@1.2.57':
dependencies: dependencies:
'@iconify/types': 2.0.0 '@iconify/types': 2.0.0