<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>迷失博客</title><description>分享技术 · 热爱生活</description><link>https://fuwari.vercel.app/</link><language>zh_CN</language><item><title>甲骨文 Debian 扩容引导卷</title><link>https://fuwari.vercel.app/posts/oracle-debian-parted/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/oracle-debian-parted/</guid><description>arm 引导卷在网站上从 50G 扩容到了 100G.只要点点就好了。 然后去系统扩容发现是 DD 后的系统，没有 oci 扩容 找了半天。发现可以用 parted 扩容 先重启系统一次  bash </description><pubDate>Thu, 04 Jul 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;arm 引导卷在网站上从 50G 扩容到了 100G.只要点点就好了。 然后去系统扩容发现是 DD 后的系统，没有 oci 扩容 找了半天。发现可以用 parted 扩容 &lt;strong&gt;先重启系统一次&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 安装
sudo apt-get install parted
# 进入
parted
# 选择设备
select /dev/sda
# 看分区表，找到对应 ID
print
# 假设是 2 ，调整 2 分区的尺寸，输入尺寸确定
resizepart 2
# Disk /dev/sda: 107GB
# 这里我打印出来的磁盘总分区是107GB
# 故此.我输入的尺寸为107GB,然后回车

# 退出
quit
# 这时候分区表已经改了，但文件系统还没更新，一般是 ext4 所以可以用这个更新
sudo apt-get install e2fsprogs
# 更新文件系统信息
resize2fs /dev/sda2
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>检测 Linux VPS 是 Xen、OpenVZ 还是 KVM 架构的方法</title><link>https://fuwari.vercel.app/posts/virt-what/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/virt-what/</guid><description>virt-what 官网是：https://people.redhat.com/~rjones/virt-what/https://people.redhat.com/~rjones/virt-wha</description><pubDate>Thu, 04 Jul 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;virt-what 官网是：&lt;a href=&quot;https://people.redhat.com/~rjones/virt-what/&quot;&gt;https://people.redhat.com/~rjones/virt-what/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;发行源码包：&lt;a href=&quot;https://people.redhat.com/~rjones/virt-what/files/&quot;&gt;https://people.redhat.com/~rjones/virt-what/files/&lt;/a&gt;git 源码仓库是：git://git.annexia.org/git/virt-what.git 从 git 源码仓库中可以推测出网站 &lt;a href=&quot;http://git.annexia.org/&quot;&gt;http://git.annexia.org/&lt;/a&gt; ，然后从中查找 virt-what，找到其 git 的提交历史网站：&lt;a href=&quot;http://git.annexia.org/?p=virt-what.git;a=summary&quot;&gt;http://git.annexia.org/?p=virt-what.git;a=summary&lt;/a&gt; ，从而确定其目前最新版本是 1.26。&lt;/p&gt;
&lt;p&gt;一、安装 1.1使用内置软件包管理器安装&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# CentOS
sudo yum install virt-what
# Ubuntu
sudo apt-get install virt-what
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;1.2编译安装&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;wget http://people.redhat.com/~rjones/virt-what/files/virt-what-1.26.tar.gz
tar zxvf virt-what-1.26.tar.gz
cd virt-what-1.26/
./configure
make
make install # 其实不需要安装，下面有步骤，核心就是一个 virt-what-cpuid-helper
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;经过上面的编译，会生成一个 virt-what-cpuid-helper 的程序，将其拷贝到 /usr/local/libexec 下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo cp virt-what-cpuid-helper /usr/local/libexec
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后执行 virt-what 就就可以了，它是一个 Bash 脚本。&lt;/p&gt;
&lt;p&gt;二、使用&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;virt-what
bash ./virt-what
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;反馈：KVM 说明当前的 VPS 采用的是 KVM 虚拟化技术。&lt;/p&gt;
&lt;p&gt;三、遇到的问题&lt;/p&gt;
&lt;p&gt;运行 shell 脚本时报错 [[ : not found 解决方法 在运行至判断表达式时报错，sh 命令无法识别 [[]] 表达式。&lt;/p&gt;
&lt;p&gt;最终也找到了问题的解决办法：bash 与 sh 是有区别的，两者是不同的命令，且 bash 是 sh 的增强版，而 [[]] 是 bash 脚本中的命令，因此在执行时，使用 sh 命令会报错，将 sh 替换为 bash 命令即可：&lt;code&gt;bash ./virt-what&lt;/code&gt;&lt;/p&gt;
</content:encoded></item><item><title>每天重启docker compose服务</title><link>https://fuwari.vercel.app/posts/docker-compose-restart/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/docker-compose-restart/</guid><description>1.根据条件删除定时任务  2.然后添加定时任务/opt/your 改成你自己的目录  时间可以访问这里计算： https://tool.lu/crontabhttps://tool.lu/cront</description><pubDate>Wed, 03 Jul 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;1.根据条件删除定时任务&lt;/p&gt;
&lt;p&gt;2.然后添加定时任务(/opt/your 改成你自己的目录)&lt;/p&gt;
&lt;p&gt;时间可以访问这里计算： &lt;a href=&quot;https://tool.lu/crontab&quot;&gt;https://tool.lu/crontab&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;crontab -l  grep -v docker-compose  crontab -
(crontab -l; echo 0 3 * * * cd /opt/your &amp;amp;&amp;amp; /usr/local/bin/docker-compose down &amp;amp;&amp;amp; /usr/local/bin/docker-compose up -d)  crontab -
crontab -l
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;docker-compose up, docker-compose restart, docker restart 的区别。 docker-compose restart 不会加载新的 docker-compose 相关文件的新的改动（如，docker-compose.yml 文件） docker-compose down, docker-compose up 一定会是全部最新的内容 如果只是改动代码和配置文件等，docker-compose restart 是没有问题的&lt;/p&gt;
&lt;p&gt;定时任务常见命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 启动这些任务
service cron start
# 若是修改定时任务内容之后，可以重启定时任务
service cron restart
# 查看定时任务的状态
service cron status
# 修改 rsyslog 服务，将 /etc/rsyslog.d/50-default.conf  文件中的 #cron.* 前的 # 删掉；# 用以下命令重启 rsyslog 服务：service rsyslog restart；# 查看定时任务日志
cat /var/log/cron.log
# 查看定时任务日志的最近 5 个记录
tail -n 5 /var/log/cron.log
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>IP地址排序公式</title><link>https://fuwari.vercel.app/posts/ip-sort/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/ip-sort/</guid><description>几百个 IP.按照顺序用表格排序，找个公式完美解决Excel  bash =SUMPRODUCTMIDSUBSTITUTED4,.,REPT ,20,{1,21,41,61},2010^{9,6,3,</description><pubDate>Sun, 14 Jan 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;几百个 IP.按照顺序用表格排序，找个公式完美解决(Excel)&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;=SUMPRODUCT(MID(SUBSTITUTE(D4,.,REPT( ,20)),{1,21,41,61},20)*10^{9,6,3,0})
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;D4为你 IP 所在的列表位置，然后一拉到底。最后根据计算出来的数值排序即可&lt;/p&gt;
</content:encoded></item><item><title>sed在文件特定行首尾或行前后添加内容</title><link>https://fuwari.vercel.app/posts/sed1/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/sed1/</guid><description>bash  在特定行首添加： sed -i &apos;3{s/^/aa/}&apos; a.txt 在第三行行首添加aa，文件名为a.txt  在特定行尾添加： sed -i &apos;{3/$/aa/}&apos; a.txt（在第三</description><pubDate>Sun, 14 Jan 2024 00:00:00 GMT</pubDate><content:encoded>&lt;pre&gt;&lt;code&gt;# 在特定行首添加：
sed -i &apos;3{s/^/aa/}&apos; a.txt (在第三行行首添加aa，文件名为a.txt)

在特定行尾添加：
sed -i &apos;{3/$/aa/}&apos; a.txt（在第三行行尾添加aa,文件名为a.txt）

连续几行行首添加：
sed -i &apos;1,2{s/^/bb/}&apos; a.txt（在1-2行行首添加bb）

在连续几行行尾添加：
sed -i &apos;1,2{s/$/bb/}&apos; a.txt（在1-2行行尾添加bb）

在特定行，行前添加数据
sed -i &apos;N;2 i 111&apos; c.txt（在第一行行前添加111）

在特定行，行后添加数据
sed -i &apos;N; 2 i 111&apos; c.txt（在第二行行后添加111）
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;pre&gt;&lt;code&gt;# -----------在某行(指具体行号)前或后加一行内容-----------

# 第4行末尾追加一行，内容为test
sed -i &apos;N;4atest&apos; test.txt

# 第4行行首追加一行，内容为test
sed -i &apos;N;4itest&apos; test.txt

# 匹配到test字段的行行首插入一行
find . -name test.txtxargs sed -i &apos;/test/i &apos;

# 所有行首增加
sed -i &apos;s/^/ABC/&apos; test.txt

# 所有行尾添加
sed -i \&apos;s/$/XYZ/\&apos; test.txt

# 第5行添加文件a.txt的内容
sed -i &apos;5 r a.txt&apos; test.txt

# oooo行文件a.txt的内容
sed -i &apos;/oooo/r a.txt&apos; 5.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;pre&gt;&lt;code&gt;# ------删除-----------------------

# 删除指定行，例如第5行
sed -i &apos;5 d&apos; test.txt

# 删除首行
sed -i &apos;1d&apos; test.txt

# 删除末行
sed -i &apos;$d&apos; test.txt

# 删除空行
sed -i &apos;/^$/d&apos; test.txt

# 剔除空格
sed -i &apos;s/[ ]*//g&apos; test.txt

# 删除车符
sed -i &apos;s/^M//g&apos; test.txt

# 删除指定字段的下一行
sed -i &apos;/test/{n;d}&apos; test.txt  #匹配到test字段

# 删除指定字段的上一行
sed -i -e :a -e &apos;$!N;s/.*n(.*test)/1/;ta&apos; -e &apos;P;d&apos; test.txt    #匹配到test字段
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;p&gt;在 linux 系统中，我们可以使用 sed 命令在关键字所在的行尾部追加内容。&lt;/p&gt;
&lt;p&gt;例如，假设你有一个名为 file.txt 的文件，并且想要在包含 &quot;keyword&quot; 的行尾插入 &quot;new content&quot;。你可以运行以下命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sed &apos;/keyword/s/$/ new content/&apos; file.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这个命令会查找包含 &quot;keyword&quot; 的行，并在这些行的尾部添加 &quot;new content&quot;。&lt;/p&gt;
&lt;p&gt;这个命令的工作方式如下：&lt;/p&gt;
&lt;p&gt;&apos;/&apos; 和 &apos;/&apos; 之间的 &quot;keyword&quot; 是你正在查找的模式。 s 表示替换操作。 $ 是行尾的表示。 &quot;new content&quot; 就是你要插入的文本。 注意：这个命令只会在屏幕上显示修改后的内容，而不会改变实际的文件。如果你想要将更改保存回文件，你可以使用 -i 选项：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sed -i &apos;/keyword/s/$/ new content/&apos; file.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;以上命令会在包含 &apos;keyword&apos; 的行尾追加 &apos;new content&apos;。&lt;/p&gt;
</content:encoded></item><item><title>cloudflare 域名脚本</title><link>https://fuwari.vercel.app/posts/cloudflare-domain/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/cloudflare-domain/</guid><description>这是一个用于管理 Cloudflare DNS 双栈（IPv4+IPv6）记录的 Bash 脚本，主要功能是自动检测本机公网 IP 并同步到 Cloudflare 域名解析，支持多种操作模式，具体介绍</description><pubDate>Sat, 14 May 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;这是一个用于管理 Cloudflare DNS 双栈（IPv4+IPv6）记录的 Bash 脚本，主要功能是自动检测本机公网 IP 并同步到 Cloudflare 域名解析，支持多种操作模式，具体介绍如下：&lt;/p&gt;
&lt;h2&gt;核心功能&lt;/h2&gt;
&lt;h4&gt;DNS 记录管理：支持 A 记录（IPv4）和 AAAA 记录（IPv6）的自动添加、更新和删除&lt;/h4&gt;
&lt;h4&gt;多模式操作：&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;自动适配模式（默认）：根据检测到的 IP 类型（IPv4/IPv6）自动管理对应记录&lt;/li&gt;
&lt;li&gt;仅 IPv4模式：只处理 A 记录&lt;/li&gt;
&lt;li&gt;仅 IPv6模式：只处理 AAAA 记录&lt;/li&gt;
&lt;li&gt;删除所有模式：删除指定域名的所有 A/AAAA 记录&lt;/li&gt;
&lt;li&gt;增强错误处理：包含 API 重试机制、JSON 响应验证、网络连通性检测等&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;主要组件&lt;/h2&gt;
&lt;h3&gt;配置区：需手动设置 Cloudflare 账号邮箱、API 令牌、TTL 和代理状态等参数&lt;/h3&gt;
&lt;h4&gt;工具函数：&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;依赖检查与自动安装（curl、jq、ping6等）&lt;/li&gt;
&lt;li&gt;网络连通性验证（特别是 IPv6）&lt;/li&gt;
&lt;li&gt;Cloudflare API 调用封装（带重试机制）&lt;/li&gt;
&lt;li&gt;日志输出格式化（错误 / 信息 / 警告分类）&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;核心逻辑：&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;获取公网 IP（同时检测 IPv4和 IPv6）&lt;/li&gt;
&lt;li&gt;查询 Cloudflare 域名 Zone ID 和现有 DNS 记录&lt;/li&gt;
&lt;li&gt;根据操作模式执行相应的 DNS 记录管理（添加 / 更新 / 删除）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;使用方法&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;# 自动适配模式
bash cloudflare2026.sh 域名

# 单独操作模式
bash cloudflare2026.sh 域名 4   # 仅IPv4
bash cloudflare2026.sh 域名 6   # 仅IPv6
bash cloudflare2026.sh 域名 1   # 删除所有记录
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;特点&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;自动检测并安装缺失的依赖工具&lt;/li&gt;
&lt;li&gt;对 IPv6连通性进行多重验证&lt;/li&gt;
&lt;li&gt;API 调用包含重试机制，提高稳定性&lt;/li&gt;
&lt;li&gt;详细的日志输出，便于排查问题&lt;/li&gt;
&lt;li&gt;自动清理无效记录（如仅 IPv4模式下会删除 IPv6记录）&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;使用前需确保已在 Cloudflare 上添加域名，并配置正确的 API 令牌（需包含 DNS:Edit 权限）。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;申请 CloudFlare API&lt;/h2&gt;
&lt;p&gt;前往 &lt;a href=&quot;https://dash.cloudflare.com/profile/api-tokens&quot;&gt;https://dash.cloudflare.com/profile/api-tokens&lt;/a&gt; 登录后，右上角选择个人资料，点击创建令牌&lt;/p&gt;
&lt;p&gt;为了安全，用自定义令牌，没有用全局令牌。如你非要用全局令牌，请修改脚本 Authorization 全部替换为 X-Auth-Key&lt;/p&gt;
&lt;p&gt;编辑 cloudFlare.sh 内的参数(API 与 Email)后。运行脚本 添加/更新 域名的解析&lt;/p&gt;
&lt;h2&gt;其他问题&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://api.cloudflare.com/#dns-records-for-a-zone-properties&quot;&gt;官方 API 文档&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;脚本开源&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;#!/usr/bin/env bash
# 功能: Cloudflare DNS 双栈管理（IPv4+IPv6）+ 增强错误处理
# 使用方法: 
#   1. 自动适配：bash script.sh 域名
#   2. 单独操作：bash script.sh 域名 操作类型（4=仅IPv4 6=仅IPv6 1=删除所有 0=自动）

# -------------------------- 配置区（必改）--------------------------
AUTH_EMAIL=&quot;你的参数&quot;       # Cloudflare账号邮箱
AUTH_TOKEN=&quot;你的参数&quot;  # Bearer令牌（需DNS:Edit权限）
TTL=1                                  # DNS缓存时间（1=自动）
PROXIED=false                          # 是否启用Cloudflare代理（true/false）
# IPv6连通性验证节点
IPV6_PING_NODES=(
    &quot;2606:4700:4700::1111&quot;  # Cloudflare DNS IPv6
    &quot;2001:4860:4860::8888&quot;  # Google DNS IPv6
    &quot;2400:3200::1&quot;          # Alibaba DNS IPv6
)
# -------------------------------------------------------------------

# 初始化核心变量
RECORD_NAME=&quot;$1&quot;
OPERATION=&quot;${2:-0}&quot;
ZONE_NAME=&quot;${RECORD_NAME#*.}&quot;
IPV4=&quot;&quot;
IPV6=&quot;&quot;
ZONE_ID=&quot;&quot;
API_BASE=&quot;https://api.cloudflare.com/client/v4/zones&quot;
EXISTING_IDS=()
EXISTING_TYPES=()
EXISTING_CONTENTS=()

# -------------------------- 工具函数 --------------------------
# 错误处理（红色）
error_exit() {
    echo -e &quot;\033[31m错误：$1\033[0m&quot; &amp;gt;&amp;amp;2
    exit 1
}

# 日志输出（绿色）
log_info() {
    echo -e &quot;\033[32m$1\033[0m&quot;
}

# 警告输出（黄色）
log_warn() {
    echo -e &quot;\033[33m警告：$1\033[0m&quot;
}

# 安装依赖
install_dependency() {
    local dep=$1
    log_info &quot;正在安装依赖: $dep&quot;
    
    if command -v apt-get &amp;amp;&amp;gt; /dev/null; then
        sudo apt-get update -qq &amp;gt; /dev/null
        sudo apt-get install -qq -y &quot;$dep&quot; &amp;gt; /dev/null
    elif command -v yum &amp;amp;&amp;gt; /dev/null; then
        sudo yum install -y &quot;$dep&quot; &amp;gt; /dev/null
    elif command -v dnf &amp;amp;&amp;gt; /dev/null; then
        sudo dnf install -y &quot;$dep&quot; &amp;gt; /dev/null
    elif command -v pacman &amp;amp;&amp;gt; /dev/null; then
        sudo pacman -S --noconfirm &quot;$dep&quot; &amp;gt; /dev/null
    else
        error_exit &quot;不支持的操作系统，无法自动安装依赖 $dep，请手动安装&quot;
    fi

    if ! command -v &quot;$dep&quot; &amp;amp;&amp;gt; /dev/null; then
        error_exit &quot;依赖 $dep 安装失败，请手动安装&quot;
    fi
}

# 检查并安装依赖
check_deps() {
    local missing=0
    local deps=()

    if ! command -v curl &amp;amp;&amp;gt; /dev/null; then
        echo &quot;缺少依赖：curl&quot; &amp;gt;&amp;amp;2
        deps+=(&quot;curl&quot;)
        missing=1
    fi
    if ! command -v jq &amp;amp;&amp;gt; /dev/null; then
        echo &quot;缺少依赖：jq&quot; &amp;gt;&amp;amp;2
        deps+=(&quot;jq&quot;)
        missing=1
    fi
    
    # 检查IPv6 ping工具
    local ping6_available=0
    if command -v ping6 &amp;amp;&amp;gt; /dev/null; then
        ping6_available=1
    elif ping -6 -c 1 -W 1 ::1 &amp;amp;&amp;gt; /dev/null; then
        ping6_available=1
    fi
    if [ $ping6_available -eq 0 ]; then
        echo &quot;缺少依赖：IPv6 ping工具&quot; &amp;gt;&amp;amp;2
        # 根据不同系统添加对应的iputils包
        if command -v apt-get &amp;amp;&amp;gt; /dev/null; then
            deps+=(&quot;iputils-ping&quot;)
        elif command -v yum &amp;amp;&amp;gt; /dev/null || command -v dnf &amp;amp;&amp;gt; /dev/null; then
            deps+=(&quot;iputils&quot;)
        elif command -v pacman &amp;amp;&amp;gt; /dev/null; then
            deps+=(&quot;iputils&quot;)
        fi
        missing=1
    fi

    if [ $missing -eq 1 ]; then
        log_info &quot;开始安装缺失的依赖...&quot;
        for dep in &quot;${deps[@]}&quot;; do
            install_dependency &quot;$dep&quot;
        done
        log_info &quot;所有依赖安装完成&quot;
    fi
}

# 验证响应是否为JSON（修复HTML响应问题）
is_valid_json() {
    local input=&quot;$1&quot;
    # 检查是否包含HTML标签（常见错误情况）
    if echo &quot;$input&quot; | grep -qi &apos;&amp;lt;html&amp;gt;\|&amp;lt;body&amp;gt;\|&amp;lt;doctype&apos;; then
        return 1
    fi
    # 使用jq验证JSON格式
    echo &quot;$input&quot; | jq . &amp;gt;/dev/null 2&amp;gt;&amp;amp;1
    return $?
}

# IPv6网络连通性验证
verify_ipv6_connectivity() {
    log_info &quot;正在验证IPv6网络连通性...&quot;
    local ping_success=0
    local ping_cmd=&quot;ping6&quot;
    if ! command -v ping6 &amp;amp;&amp;gt; /dev/null; then
        ping_cmd=&quot;ping -6&quot;
    fi

    for node in &quot;${IPV6_PING_NODES[@]}&quot;; do
        log_info &quot;正在ping IPv6节点：$node...&quot;
        if $ping_cmd -c 1 -W 3 &quot;$node&quot; &amp;amp;&amp;gt; /dev/null; then
            log_info &quot;✅ IPv6节点[$node] ping通&quot;
            ping_success=1
            break
        fi
    done

    if [ &quot;$ping_success&quot; -eq 0 ]; then
        error_exit &quot;❌ 所有IPv6节点均无法连通，取消IPv6操作&quot;
    fi
}

# 获取本机公网IP
get_public_ips() {
    log_info &quot;正在检测本机公网IP...&quot;
    
    # 获取IPv4（带错误处理）
    IPV4=$(curl -4 -s --max-time 5 --retry 2 api64.ipify.org)
    if [ -z &quot;$IPV4&quot; ]; then
        IPV4=$(curl -4 -s --max-time 5 --retry 2 ipv4.ip.sb)
    fi

    # 获取IPv6（带错误处理）
    IPV6=$(curl -6 -s --max-time 5 --retry 2 api64.ipify.org)
    if [ -z &quot;$IPV6&quot; ]; then
        IPV6=$(curl -6 -s --max-time 5 --retry 2 ipv6.ip.sb)
    fi

    # 验证并输出结果
    if [ -n &quot;$IPV6&quot; ]; then
        verify_ipv6_connectivity
        log_info &quot;✅ 检测到IPv6：$IPV6&quot;
    fi
    if [ -n &quot;$IPV4&quot; ]; then
        log_info &quot;✅ 检测到IPv4：$IPV4&quot;
    fi
    if [ -z &quot;$IPV4&quot; ] &amp;amp;&amp;amp; [ -z &quot;$IPV6&quot; ]; then
        error_exit &quot;❌ 未检测到任何公网IP&quot;
    fi
}

# 调用Cloudflare API（增强版）
call_api() {
    local method=&quot;$1&quot;
    local endpoint=&quot;$2&quot;
    local data=&quot;${3:-}&quot;

    # 执行API请求（增加重试机制）
    for ((attempt=1; attempt&amp;lt;=3; attempt++)); do
        response=$(curl -s -w &quot;\n%{http_code}&quot; -X &quot;$method&quot; \
            -H &quot;X-Auth-Email: $AUTH_EMAIL&quot; \
            -H &quot;Authorization: Bearer $AUTH_TOKEN&quot; \
            -H &quot;Content-Type: application/json&quot; \
            ${data:+-d &quot;$data&quot;} \
            &quot;$API_BASE$endpoint&quot;)

        http_code=$(echo &quot;$response&quot; | tail -n1)
        response_body=$(echo &quot;$response&quot; | head -n -1)

        # 检查HTTP状态码
        if [ &quot;$http_code&quot; -ge 200 ] &amp;amp;&amp;amp; [ &quot;$http_code&quot; -lt 300 ]; then
            # 检查是否为有效JSON
            if is_valid_json &quot;$response_body&quot;; then
                # 检查API成功状态
                if echo &quot;$response_body&quot; | jq -e &apos;.success&apos; &amp;gt; /dev/null; then
                    echo &quot;$response_body&quot;
                    return 0
                fi
            fi
        fi

        # 重试提示
        if [ $attempt -lt 3 ]; then
            log_warn &quot;API请求尝试$attempt失败，正在重试...&quot;
            sleep 2
        fi
    done

    # 详细错误信息
    error_exit &quot;API请求失败：
    方法: $method
    地址: $API_BASE$endpoint
    状态码: $http_code
    响应: $(echo &quot;$response_body&quot; | head -n 10)  # 显示前10行&quot;
}

# 获取Cloudflare Zone ID
get_zone_id() {
    log_info &quot;正在获取Zone ID（$ZONE_NAME）...&quot;
    response=$(call_api &quot;GET&quot; &quot;?name=$ZONE_NAME&quot;)
    ZONE_ID=$(echo &quot;$response&quot; | jq -r &apos;.result[0].id&apos;)
    
    if [ -z &quot;$ZONE_ID&quot; ] || [ &quot;$ZONE_ID&quot; = &quot;null&quot; ]; then
        error_exit &quot;未找到域名$ZONE_NAME，请检查：
        1. 域名是否已添加到Cloudflare
        2. 认证信息是否正确
        3. API令牌是否有足够权限&quot;
    fi
    log_info &quot;✅ 成功获取Zone ID：$ZONE_ID&quot;
}

# 获取现有DNS记录
get_existing_records() {
    log_info &quot;正在查询现有DNS记录（$RECORD_NAME）...&quot;
    response=$(call_api &quot;GET&quot; &quot;/$ZONE_ID/dns_records?name=$RECORD_NAME&quot;)
    
    local record_count=$(echo &quot;$response&quot; | jq &apos;.result | length&apos;)
    if [ &quot;$record_count&quot; -eq 0 ]; then
        log_info &quot;ℹ️ 未查询到任何DNS记录&quot;
        return
    fi

    # 提取A/AAAA记录
    for ((i=0; i&amp;lt;record_count; i++)); do
        local type=$(echo &quot;$response&quot; | jq -r &quot;.result[$i].type&quot;)
        if [ &quot;$type&quot; = &quot;A&quot; ] || [ &quot;$type&quot; = &quot;AAAA&quot; ]; then
            EXISTING_IDS+=($(echo &quot;$response&quot; | jq -r &quot;.result[$i].id&quot;))
            EXISTING_TYPES+=(&quot;$type&quot;)
            EXISTING_CONTENTS+=($(echo &quot;$response&quot; | jq -r &quot;.result[$i].content&quot;))
        fi
    done

    # 显示记录
    log_info &quot;✅ 查询到${#EXISTING_TYPES[@]}条有效记录：&quot;
    for ((i=0; i&amp;lt;${#EXISTING_TYPES[@]}; i++)); do
        echo &quot;  - ${EXISTING_TYPES[$i]}: ${EXISTING_CONTENTS[$i]}&quot;
    done
}

# -------------------------- DNS操作函数 --------------------------
add_record() {
    local type=&quot;$1&quot;
    local content=&quot;$2&quot;

    log_info &quot;正在添加$type记录：$RECORD_NAME → $content&quot;
    local data=$(jq -n \
        --arg type &quot;$type&quot; \
        --arg name &quot;$RECORD_NAME&quot; \
        --arg content &quot;$content&quot; \
        --argjson ttl &quot;$TTL&quot; \
        --argjson proxied &quot;$PROXIED&quot; \
        &apos;{type: $type, name: $name, content: $content, ttl: $ttl, proxied: $proxied}&apos;)
    
    call_api &quot;POST&quot; &quot;/$ZONE_ID/dns_records&quot; &quot;$data&quot;
    log_info &quot;✅ $type记录添加成功&quot;
}

update_record() {
    local record_id=&quot;$1&quot;
    local type=&quot;$2&quot;
    local old_ip=&quot;$3&quot;
    local new_ip=&quot;$4&quot;

    log_info &quot;正在更新$type记录：$old_ip → $new_ip&quot;
    local data=$(jq -n \
        --arg type &quot;$type&quot; \
        --arg name &quot;$RECORD_NAME&quot; \
        --arg content &quot;$new_ip&quot; \
        --argjson ttl &quot;$TTL&quot; \
        --argjson proxied &quot;$PROXIED&quot; \
        &apos;{type: $type, name: $name, content: $content, ttl: $ttl, proxied: $proxied}&apos;)
    
    call_api &quot;PUT&quot; &quot;/$ZONE_ID/dns_records/$record_id&quot; &quot;$data&quot;
    log_info &quot;✅ $type记录更新成功&quot;
}

delete_record() {
    local record_id=&quot;$1&quot;
    local type=&quot;$2&quot;
    local content=&quot;$3&quot;

    log_info &quot;正在删除$type记录：$content&quot;
    call_api &quot;DELETE&quot; &quot;/$ZONE_ID/dns_records/$record_id&quot;
    log_info &quot;✅ $type记录删除成功&quot;
}

# -------------------------- 主逻辑函数 --------------------------
manage_ipv4() {
    local has_a_record=0
    local a_record_id=&quot;&quot;
    local a_old_ip=&quot;&quot;

    # 检查现有A记录
    for ((i=0; i&amp;lt;${#EXISTING_TYPES[@]}; i++)); do
        if [ &quot;${EXISTING_TYPES[$i]}&quot; = &quot;A&quot; ]; then
            has_a_record=1
            a_record_id=&quot;${EXISTING_IDS[$i]}&quot;
            a_old_ip=&quot;${EXISTING_CONTENTS[$i]}&quot;
            break
        fi
    done

    # 处理A记录
    if [ &quot;$has_a_record&quot; -eq 1 ]; then
        if [ &quot;$a_old_ip&quot; = &quot;$IPV4&quot; ]; then
            log_info &quot;ℹ️ A记录已为最新：$IPV4&quot;
        else
            update_record &quot;$a_record_id&quot; &quot;A&quot; &quot;$a_old_ip&quot; &quot;$IPV4&quot;
        fi
    else
        add_record &quot;A&quot; &quot;$IPV4&quot;
    fi

    # 清理残留IPv6记录
    if [ -z &quot;$IPV6&quot; ] &amp;amp;&amp;amp; [ &quot;$OPERATION&quot; -ne 6 ]; then
        for ((i=0; i&amp;lt;${#EXISTING_TYPES[@]}; i++)); do
            if [ &quot;${EXISTING_TYPES[$i]}&quot; = &quot;AAAA&quot; ]; then
                delete_record &quot;${EXISTING_IDS[$i]}&quot; &quot;AAAA&quot; &quot;${EXISTING_CONTENTS[$i]}&quot;
            fi
        done
    fi
}

manage_ipv6() {
    # 二次验证IPv6连通性
    verify_ipv6_connectivity

    local has_aaaa_record=0
    local aaaa_record_id=&quot;&quot;
    local aaaa_old_ip=&quot;&quot;

    # 检查现有AAAA记录
    for ((i=0; i&amp;lt;${#EXISTING_TYPES[@]}; i++)); do
        if [ &quot;${EXISTING_TYPES[$i]}&quot; = &quot;AAAA&quot; ]; then
            has_aaaa_record=1
            aaaa_record_id=&quot;${EXISTING_IDS[$i]}&quot;
            aaaa_old_ip=&quot;${EXISTING_CONTENTS[$i]}&quot;
            break
        fi
    done

    # 处理AAAA记录
    if [ &quot;$has_aaaa_record&quot; -eq 1 ]; then
        if [ &quot;$aaaa_old_ip&quot; = &quot;$IPV6&quot; ]; then
            log_info &quot;ℹ️ AAAA记录已为最新：$IPV6&quot;
        else
            update_record &quot;$aaaa_record_id&quot; &quot;AAAA&quot; &quot;$aaaa_old_ip&quot; &quot;$IPV6&quot;
        fi
    else
        add_record &quot;AAAA&quot; &quot;$IPV6&quot;
    fi

    # 清理残留IPv4记录
    if [ -z &quot;$IPV4&quot; ] &amp;amp;&amp;amp; [ &quot;$OPERATION&quot; -ne 4 ]; then
        for ((i=0; i&amp;lt;${#EXISTING_TYPES[@]}; i++)); do
            if [ &quot;${EXISTING_TYPES[$i]}&quot; = &quot;A&quot; ]; then
                delete_record &quot;${EXISTING_IDS[$i]}&quot; &quot;A&quot; &quot;${EXISTING_CONTENTS[$i]}&quot;
            fi
        done
    fi
}

delete_all_records() {
    if [ ${#EXISTING_TYPES[@]} -eq 0 ]; then
        log_info &quot;ℹ️ 没有记录可删除&quot;
        return
    fi

    log_info &quot;正在删除所有记录（共${#EXISTING_TYPES[@]}条）...&quot;
    for ((i=0; i&amp;lt;${#EXISTING_TYPES[@]}; i++)); do
        delete_record &quot;${EXISTING_IDS[$i]}&quot; &quot;${EXISTING_TYPES[$i]}&quot; &quot;${EXISTING_CONTENTS[$i]}&quot;
    done
}

# -------------------------- 主流程 --------------------------
main() {
    # 参数检查
    if [ -z &quot;$RECORD_NAME&quot; ]; then
        error_exit &quot;请指定域名！使用方法：
  自动适配：$0 域名
  单独操作：$0 域名 [4/6/1]&quot;
    fi

    # 环境检查
    check_deps

    # 主逻辑执行
    echo -e &quot;\n===== Cloudflare DNS 双栈管理工具 =====&quot;
    get_public_ips
    get_zone_id
    get_existing_records
    
    echo -e &quot;\n----------------------------------------&quot;
    case &quot;$OPERATION&quot; in
        0)  # 自动适配
            log_info &quot;执行自动适配模式&quot;
            [ -n &quot;$IPV4&quot; ] &amp;amp;&amp;amp; manage_ipv4
            [ -n &quot;$IPV6&quot; ] &amp;amp;&amp;amp; manage_ipv6
            ;;
        4)  # 仅IPv4
            [ -z &quot;$IPV4&quot; ] &amp;amp;&amp;amp; error_exit &quot;未检测到IPv4地址&quot;
            log_info &quot;执行仅IPv4模式&quot;
            manage_ipv4
            ;;
        6)  # 仅IPv6
            [ -z &quot;$IPV6&quot; ] &amp;amp;&amp;amp; error_exit &quot;未检测到IPv6地址&quot;
            log_info &quot;执行仅IPv6模式&quot;
            manage_ipv6
            ;;
        1)  # 删除所有
            log_info &quot;执行删除所有记录模式&quot;
            delete_all_records
            ;;
        *)  # 无效操作
            error_exit &quot;无效操作类型！可选值：0=自动 4=仅IPv4 6=仅IPv6 1=删除所有&quot;
            ;;
    esac

    echo -e &quot;\n----------------------------------------&quot;
    log_info &quot;操作完成&quot;
}

# 启动主程序
main
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>ping通ipv6地址</title><link>https://fuwari.vercel.app/posts/ping-ipv6/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/ping-ipv6/</guid><description>Windows  ping ipv6主机名的方法如下：  bash ping -6 ipv6.google.com   ping ipv6地址的方法如下：  bash ping IPv6Address</description><pubDate>Tue, 10 May 2022 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;Windows&lt;/h1&gt;
&lt;p&gt;&lt;code&gt;ping ipv6主机名&lt;/code&gt;的方法如下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ping -6 ipv6.google.com
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;ping ipv6地址&lt;/code&gt;的方法如下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ping IPv6Address[%ZoneID]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;例如&lt;code&gt;ping 2001:4860:0:2001::68&lt;/code&gt;。如果要&lt;code&gt;ping link-local 地址&lt;/code&gt;，则需要指定网络接口索引：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ping fe80::260:97ff:fe02:6ea5%4
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;其中&lt;code&gt;%4&lt;/code&gt;表示用索引为&lt;code&gt;4&lt;/code&gt;的网络接口&lt;code&gt;ping&lt;/code&gt;目标计算机。要查看网络接口索引，使用如下命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;netsh interface ipv6 show address
&lt;/code&gt;&lt;/pre&gt;
&lt;h1&gt;Linux&lt;/h1&gt;
&lt;p&gt;&lt;code&gt;ping ipv6主机名&lt;/code&gt;的方法如下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ping6 ipv6.google.com
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;ping ipv6地址&lt;/code&gt;的方法如下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ping6 IPv6Address[%InterfaceName]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果要&lt;code&gt;ping link-local 地址&lt;/code&gt;，则需要指定网络接口名称：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ping6 fe80::260:97ff:fe02:6ea5%eth0
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;其中&lt;code&gt;%eth0&lt;/code&gt;表示用网络接口&lt;code&gt;eth0&lt;/code&gt;来&lt;code&gt;ping&lt;/code&gt;目标计算机。 使用&lt;code&gt;ping6&lt;/code&gt;命令访问一个&lt;code&gt;IPv6&lt;/code&gt;的地址时，经常出现&lt;code&gt;connect: Invalid argument&lt;/code&gt;的错误。解决方法是在&lt;code&gt;IPv6&lt;/code&gt;地址后加上&lt;code&gt;%设备名&lt;/code&gt;，例如&lt;code&gt;ping6 fe80::172:16:212:4%eth0&lt;/code&gt;。&lt;code&gt;Linux&lt;/code&gt;使用&lt;code&gt;ifconfig&lt;/code&gt;命令就可列出所有网络接口名称。&lt;/p&gt;
&lt;h1&gt;为什么 Link-local 地址后面要有百分号？&lt;/h1&gt;
&lt;p&gt;由于所有的&lt;code&gt;link-local&lt;/code&gt;地址都有相同的前缀&lt;code&gt;FE80::/64&lt;/code&gt;，并且每个网络接口都必须分配一个&lt;code&gt;link-local&lt;/code&gt;地址，因而导致当发送数据包到一个&lt;code&gt;link-local&lt;/code&gt;地址时，如果路由器使用普通的路由方法就无法决定选用哪个网络接口。因此引入了一种被叫做&lt;code&gt;zone index&lt;/code&gt;的标识符，它提供额外的路由信息，这个标识符通常指网络接口，并且通过一个百分号被附加在&lt;code&gt;IPv6&lt;/code&gt;地址后面。&lt;/p&gt;
</content:encoded></item><item><title>crontab添加定时任务</title><link>https://fuwari.vercel.app/posts/crontab/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/crontab/</guid><description>快速增删任务  添加定时任务（先删除，然后再添加）  bash crontab -l  grep -v your.sh  crontab - crontab -l; echo      sh pwd/</description><pubDate>Thu, 05 May 2022 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;快速增删任务&lt;/h2&gt;
&lt;p&gt;添加定时任务（先删除，然后再添加）&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;crontab -l  grep -v your.sh  crontab -
(crontab -l; echo * * * * * sh `pwd`/your.sh)  crontab -
crontab -l
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;your.sh 为需要检测与删除的任务关键词&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sh `pwd`/your.sh 为需要一键添加的时间与脚本命令
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;时间可以访问这里计算： &lt;a href=&quot;https://tool.lu/crontab&quot;&gt;https://tool.lu/crontab&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;详解&lt;/h2&gt;
&lt;p&gt;编辑计划任务 crontab&lt;/p&gt;
&lt;p&gt;运行带有 -e 参数的 crontab 以编辑 Cron 表&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;crontab -e
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;选择编辑器&lt;/p&gt;
&lt;p&gt;第一次运行 crontab 时，系统会提示您选择一个编辑器；如果不确定要使用哪个编辑器，请按 enter 选择 nano。&lt;/p&gt;
&lt;p&gt;添加计划任务&lt;/p&gt;
&lt;p&gt;cron 条目的布局由六个组件组成：分钟、小时、月、月、周 要执行的命令。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# * * * * * command to execute
# ┬ ┬ ┬ ┬ ┬
# │ │ │ │ │
# │ │ │ │ │
# │ │ │ │ └───── 星期几(0-7) (0-6 表示 星期日到星期六，或使用名称; 7 表示星期日，与0相同)
# │ │ │ └────────── 月 (1 - 12)
# │ │ └─────────────── 日 (1 - 31)
# │ └──────────────────── 小时 (0 - 23)
# └───────────────────────── 分钟 (0 - 59)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;30 23 * * * /home/pi/backup.sh
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这个计划任务每天 23:30运行 backup.sh 脚本。&lt;/p&gt;
&lt;p&gt;查看计划任务&lt;/p&gt;
&lt;p&gt;查看当前保存的计划任务：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;crontab -l
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;# 启动这些任务
service cron start
# 若是修改定时任务内容之后，可以重启定时任务
service cron restart
# 查看定时任务的状态
service cron status
# 修改rsyslog服务，将 /etc/rsyslog.d/50-default.conf  文件中的 #cron.* 前的 # 删掉；
# 用以下命令重启rsyslog服务：
service rsyslog restart；
# 查看定时任务日志
cat /var/log/cron.log
# 查看定时任务日志的最近5个记录
tail -n 5 /var/log/cron.log
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>ipv4端口代理转发[转载]</title><link>https://fuwari.vercel.app/posts/ipv4-netsh-win/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/ipv4-netsh-win/</guid><description>Windows 下，一键端口转发，纯批处理，不借助第三方软件实  都有什么功能？  一键 显示列表 一键 添加转发 一键 删除转发  不借助第三方工具，纯批处理明文可查阅，调用 Windows 自带命</description><pubDate>Sun, 16 May 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Windows 下，一键端口转发，纯批处理，不借助第三方软件实&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;都有什么功能？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;一键 显示列表 一键 添加转发 一键 删除转发&lt;/p&gt;
&lt;p&gt;不借助第三方工具，纯批处理(明文可查阅)，调用 Windows 自带命令实现。&lt;/p&gt;
&lt;p&gt;注意此工具仅支持 IPV4转发到 IPV4 ，并且只支持 TCP 协议，因为自带的 netsh 转发命令也仅支持 TCP，不是我不想写。&lt;/p&gt;
&lt;p&gt;默认添加 或 删减 转发规则，都会格外添加一条防火墙放行端口规则，或添加 或删除。 当你添加相对应端口转发规则，也会同时在防火墙添加一条放行此端口进入的规则。 当你删除相对于端口转发规则，也会同时删除防火墙对应端口规则。&lt;/p&gt;
&lt;p&gt;转载自 &lt;a href=&quot;https://hostloc.com/thread-844358-1-1.html&quot;&gt;https://hostloc.com/thread-844358-1-1.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://r2.onepve.com/u/2024_image/oNDwjPd5GTB7V1y.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://r2.onepve.com/u/2024_doc/ipv4.zip&quot;&gt;点我下载&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>bitwarden_rs</title><link>https://fuwari.vercel.app/posts/bitwarden-rs/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/bitwarden-rs/</guid><description>在个人隐私毫不安全的年代。 密码太多记不住、密码太简单容易被撞库怎么办？ 当然是自建个人密码库啦！使用自带的生成器生成不低于 16位及以上的密码！,再也不用担心被撞库了！   bitwarden\_r</description><pubDate>Wed, 06 May 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;在个人隐私毫不安全的年代。 密码太多记不住、密码太简单容易被撞库怎么办？ 当然是自建个人密码库啦！使用自带的生成器生成不低于 16位及以上的密码！,再也不用担心被撞库了！&lt;/p&gt;
&lt;h2&gt;bitwarden_rs&lt;/h2&gt;
&lt;p&gt;官方原版教程（英文）：&lt;a href=&quot;https://github.com/dani-garcia/bitwarden_rs/wiki&quot;&gt;https://github.com/dani-garcia/bitwarden_rs/wiki&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;直接使用 docker 拉取容器，使用命令+参数运行&lt;/p&gt;
&lt;p&gt;使用 SQLite 存储数据的初始化（初次使用无证书，记得反代启用 SSL 证书，否则客户端无法连接）&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;docker stop rs
docker rm rs
docker run -d --name rs \
  -e DOMAIN=http://ip或域名:8088 \
  -e ADMIN_TOKEN=HWsaw6Vjmz46BReN\
  -v /home/bw-data/:/data/ \
  -p 8088:80 \
  vaultwarden/server:latest
docker logs --tail 30 -f rs
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;第一次运行。需要初始化设置域名、管理员密码。请改成你自己的在运行！&lt;/p&gt;
&lt;p&gt;docker logs --tail 30 -f rs 为容器日志查看。一般无问题的话可按 CTRL+C 取消查看&lt;/p&gt;
&lt;h3&gt;登录后台&lt;/h3&gt;
&lt;p&gt;如果初始化密码的时候忘记改了，可以登录后在后台修改 ，也可以改配置文件&lt;/p&gt;
&lt;p&gt;ip:8088/admin&lt;/p&gt;
&lt;p&gt;登录后可修改各种参数，记得点击保存按钮。也可使用下方配置文件脚本直接写入&lt;/p&gt;
&lt;h3&gt;配置文件设置&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;cat &amp;gt; /home/bw-data/config.json&amp;lt;&amp;lt;-EOF
{
  domain: https://ip或域名:8088,
  disable_icon_download: false,
  signups_allowed: false,
  signups_verify: false,
  signups_verify_resend_time: 3600,
  signups_verify_resend_limit: 6,
  invitations_allowed: true,
  password_iterations: 100000,
  show_password_hint: true,
  admin_token: HWsaw6Vjmz46BReN,
  invitation_org_name: Bitwarden_RS,
  ip_header: X-Real-IP,
  icon_cache_ttl: 2592000,
  icon_cache_negttl: 259200,
  icon_download_timeout: 10,
  icon_blacklist_non_global_ips: true,
  disable_2fa_remember: false,
  authenticator_disable_time_drift: false,
  require_device_email: false,
  reload_templates: false,
  disable_admin_token: false,
  _enable_yubico: false,
  _enable_duo: false,
  _enable_smtp: false,
  smtp_host: smtpdm.aliyun.com,
  smtp_ssl: true,
  smtp_explicit_tls: true,
  smtp_port: 465,
  smtp_from: xxxx@发信域名,
  smtp_from_name: 迷失安全密码库_Bitwarden_RS,
  smtp_username: 发信用户名,
  smtp_password: 发信密码,
  smtp_timeout: 15,
  _enable_email_2fa: true,
  email_token_size: 6,
  email_expiration_time: 600,
  email_attempts_limit: 3
}
EOF
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后用新的命令启动容器&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;启动 SQLite&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;docker stop rs
docker rm rs
docker run --name rs --restart=always -d -v /home/bw-data/:/data/ -p 8088:80 vaultwarden/server:latest
docker logs --tail 30 -f rs
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;# --restart=always 表示启动容器后自动启动此镜像。
docker run --name rs --restart=always -d -v /home/bw-data/:/data/ -p 8088:80 vaultwarden/server:latest
# 容器名称简写为rs，方便手动重启镜像，例如：docker restart rs
# 8080:80 将本地8080端口映射到容器80端口,然后使用caddy或者nginx反向代理本机的8080端口.并且安装ssl证书
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果你的 docker/ bitwarden_rs 在具有固定 IP 的设备上运行，则可以将主机端口绑定到该特定 IP，从而避免将主机端口暴露给外网。&lt;/p&gt;
&lt;p&gt;如下所示，在主机端口和容器端口前面添加 IP 地址（例如 192.168.0.2）：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;docker run --name rs --restart=always -d -v /home/bw-data/:/data/ -p 192.168.0.2:8088:80 vaultwarden/server:latest
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;查看容器 IP&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;docker inspect --format &apos;{{ .NetworkSettings.IPAddress }}&apos;  rs
docker inspect -f &apos;{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}&apos; rs
docker inspect rs
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;获取宿主机 IP&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ip address show docker0
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;升级容器&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;# 升级SQLite bitwardenrs代码
docker pull vaultwarden/server:latest
# 关闭容器
docker stop rs
# 杀死已经运行的容器
#docker kill rs
# 杀死并删除旧容器
docker rm -f rs
# 然后运行上面的run代码启动
# 运行正常~删除无用旧镜像
docker image prune -f
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;自用升级脚本（自行修改 pull 的类型）&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cat &amp;gt; /root/qdrs.sh&amp;lt;&amp;lt;-EOF
#!/usr/bin/env bash
echo Info:bitwardenrs 开始
docker pull vaultwarden/server:latest
docker stop rs
docker rm rs
#clear
docker run --name rs --restart=always -d -v /opt/bitwarden/:/data/ -p 8088:80 vaultwarden/server:latest
#clear
docker image prune -f
echo Info:bitwardenrs 完成
echo Info:以下为实时日志 docker logs --tail 30 -f rs
EOF
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后执行 bash /root/qdrs.sh&lt;/p&gt;
&lt;h2&gt;数据备份&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;SQLite3数据库&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;应该使用自带的的 sqlite3 backup 命令备份 sqlite3数据库。如果在数据库工作期间进行备份，这将确保数据库不会损坏。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mkdir /home/bw-data/db-backup
sqlite3 /home/bw-data/db.sqlite3 .backup &apos;/home/bw-data/db-backup/backup.sqlite3&apos;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Mysql 数据库教程网络很多。可搜索下。。暂时不写&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;附件文件夹&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;默认情况下，它位于 /home/bw-data/attachments&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;密钥文件（可选备份）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它们仅用于存储当前登录用户的令牌，删除令牌只会将每个用户注销，从而要求他们再次登录。&lt;/p&gt;
&lt;p&gt;默认情况下，它们位于&lt;code&gt;&amp;lt;span class=&quot;color&quot; style=&quot;color:#0693e3&quot;&amp;gt;/home/bw-data&amp;lt;/span&amp;gt;&lt;/code&gt;。有 3个文件： rsa_key.der、 rsa_key.pem、rsa_key.pub.der。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;网站图标缓存（可选备份）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;图标缓存可以自行重新下载，但是如果缓存很大，则可能需要很长时间。 默认情况下，它位于/home/bw-data/icon_cache 中&lt;/p&gt;
&lt;h2&gt;从 SQLite 切换到 Mysql&lt;/h2&gt;
&lt;p&gt;之前再下就一个人使用，所以使用了 SQLite 数据库。&lt;/p&gt;
&lt;p&gt;后来带上小伙伴以及盆友等等，人就多起来了。&lt;/p&gt;
&lt;p&gt;考虑到 SQLite 的效率比不上 Mysql，且 Mysql 用&lt;a href=&quot;https://www.appnode.com/?68wb7m&quot;&gt;APPNODE&lt;/a&gt;备份很方便。故此进行迁移&lt;/p&gt;
&lt;h3&gt;从 SQLite 迁移到 MySQL&lt;/h3&gt;
&lt;p&gt;首先嘛，创建 数据库、专用用户名、专用密码（记得改成你自己的再执行）&lt;/p&gt;
&lt;p&gt;教程使用的库：bitwarden_rs 用户名：bitwarden_rs 密码：jRts8Vec6RwcoDn6容器镜像 IP：172.17.0.2&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mysql -uroot -p
# 输入密码后回车，然后继续
CREATE DATABASE `bitwarden_rs` COLLATE &apos;utf8_general_ci&apos;;
# 下面为你的数据库用户名、镜像IP、密码。
CREATE USER &apos;bitwarden_rs&apos;@&apos;localhost&apos; IDENTIFIED BY &apos;jRts8Vec6RwcoDn6&apos;;
GRANT ALL ON `bitwarden_rs`.* TO &apos;bitwarden_rs&apos;@&apos;localhost&apos;;
CREATE USER &apos;bitwarden_rs&apos;@&apos;172.17.0.2&apos; IDENTIFIED BY &apos;jRts8Vec6RwcoDn6&apos;;
GRANT ALL ON `bitwarden_rs`.* TO &apos;bitwarden_rs&apos;@&apos;172.17.0.2&apos;;
FLUSH PRIVILEGES;
exit
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;停止旧的镜像，启用一次 Mysql 的 bitwarden_rs 镜像&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;docker stop rs
docker run -d --name rs --restart=always \
-e DATABASE_URL=&apos;mysql://bitwarden_rs:jRts8Vec6RwcoDn6@172.17.0.1:3306/bitwarden_rs&apos; \
-e ENABLE_DB_WAL=&apos;false&apos; \
-v /home/bw-data/:/data/ \
-p 8088:80 \
bitwardenrs/server-mysql:latest
docker stop rs
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;开始将 SQLite 转换成 MySQL 的 sql&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cd /home/bw-data
sqlite3 db.sqlite3 .dump &amp;gt; sqlitedump.sql
grep INSERT INTO sqlitedump.sql  grep -v __diesel_schema_migrations &amp;gt; mysqldump.sql
rm -f sqlitedump.sql
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;2020年 5月 6日 然后报错了。。。找了半天是双引号的问题。。。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 替换引号
sed -i s#\#\#g mysqldump.sql
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;导入 sql 到数据库&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mysql -ubitwarden_rs -pjRts8Vec6RwcoDn6
use bitwarden_rs
source /home/bw-data/mysqldump.sql
exit
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后启动 bitwarden_rs&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;docker start rs
docker logs --tail 30 -f rs
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>纯IPV6访问IPV4资源的方法</title><link>https://fuwari.vercel.app/posts/ipv6-access-ipv4/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/ipv6-access-ipv4/</guid><description>DNS64是与 NAT64搭配使用的，原理很简单，修改你的 DNS 到 DNS64提供者的 DNS，当你发出向解析到 IPv4的域名的请求后，DNS 会将 IPv4地址按照一定格式嵌入 IPv6地址中</description><pubDate>Sun, 19 Apr 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;DNS64是与 NAT64搭配使用的，原理很简单，修改你的 DNS 到 DNS64提供者的 DNS，当你发出向解析到 IPv4的域名的请求后，DNS 会将 IPv4地址按照一定格式嵌入 IPv6地址中； 这个返回 IPv6地址会指向 NAT64的服务器，NAT64网关会按照它包含的信息获取 IPv4的数据并转发给你，这样一来你就能够直接访问 IPv4的网站了。&lt;/p&gt;
&lt;h2&gt;DNS&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;http://www.trex.fi/2011/dns64.html&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.trex.fi/2011/dns64.html&quot;&gt;http://www.trex.fi/2011/dns64.html&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;2001:67c:2b0::4
2001:67c:2b0::6
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&quot;https://go6lab.si/current-ipv6-tests/nat64dns64-public-test/&quot;&gt;https://go6lab.si/current-ipv6-tests/nat64dns64-public-test/&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;2001:67c:27e4:15::6411
2001:67c:27e4::64
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;一般修改/etc/resolv.conf 的 namesever 值即可。&lt;/p&gt;
&lt;p&gt;DNS64的好处是配置方便。弊端服务商会记录你三天的浏览记录以防止用于不法用途，且 NAT64服务器到你的服务器速度未必非常理想。&lt;/p&gt;
&lt;h2&gt;一键写入 DNS&lt;/h2&gt;
&lt;p&gt;写入前建议先备份/etc/resolv.conf&lt;/p&gt;
&lt;p&gt;mv /etc/resolv.conf /etc/resolv.conf.bak&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;echo -e nameserver 2001:67c:2b0::4\nnameserver 2001:67c:2b0::6 &amp;gt; /etc/resolv.conf
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>远程桌面管理绿色便携版</title><link>https://fuwari.vercel.app/posts/mstsc/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/mstsc/</guid><description>在家，在公司，经常通过远程连接来互相操作。后来又有各种云机器、VPS 等，越来越多的 WIN 机器。每次使用的时候都要翻找机器的账号，密码，IP，端口等等，颇为不便。于是在搜索引擎搜索各种管理软件。然</description><pubDate>Sat, 18 Apr 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;在家，在公司，经常通过远程连接来互相操作。后来又有各种云机器、VPS 等，越来越多的 WIN 机器。每次使用的时候都要翻找机器的账号，密码，IP，端口等等，颇为不便。于是在搜索引擎搜索各种管理软件。然而不是广告繁多。就是功能复杂使用不便。&lt;/p&gt;
&lt;p&gt;是在无奈之下。只好自己操刀使用易语言写了一个。简单来说就是一个记录机器信息的管理库。使用的时候调用 Win 自带的 mstsc 来远程。省去了繁杂的翻找机器配置信息的时间。&lt;/p&gt;
&lt;h2&gt;远程桌面之本地便携版&lt;/h2&gt;
&lt;p&gt;特点&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;加密存放你的机器信息配置&lt;/li&gt;
&lt;li&gt;绿色便携性，主程序和密码库放置于可移动的设备上，随用随存（例如 onedrive 等网盘）&lt;/li&gt;
&lt;li&gt;可设置开机自启动【需要管理员权限运行后才能设置】（带互斥功能防止重复运行）&lt;/li&gt;
&lt;li&gt;可最小化到托盘（设置密码后到托盘后会自动加密）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;目前版本号为 v2.8&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://r2.onepve.com/u/2024_doc/msmstsc.zip&quot;&gt;msmstsc&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;WinRemoteDesktop&lt;/h2&gt;
&lt;p&gt;这是之前找到的一个远程软件。（只改了 IP 的判定，因为有不少机器 IP 是用的域名，其他未动）&lt;/p&gt;
&lt;p&gt;没有自启动，没有软件界面加密 。非常不安全&lt;/p&gt;
&lt;p&gt;在下也不会 C# 。。。想加功能，然而看不懂代码。。。只能撸易语言了。。。如果有大佬会、并且整一个的时候记得带我分享一个，感谢感谢&lt;/p&gt;
&lt;p&gt;作者开源在 github：&lt;a href=&quot;https://github.com/wwlsky/WinRemoteDesktop&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://github.com/wwlsky/WinRemoteDesktop&quot;&gt;https://github.com/wwlsky/WinRemoteDesktop&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;网钛远程桌面管理助手&lt;/h2&gt;
&lt;p&gt;这个软件功能挺多，不过个人不习惯。。。。。。&lt;/p&gt;
&lt;p&gt;官方地址为：&lt;a href=&quot;http://otcms.cn/otsoft/2376.html&quot;&gt;http://otcms.cn/otsoft/2376.html&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;远程桌面管理工具&lt;/h2&gt;
&lt;p&gt;“远程桌面管理工具” 可以批量管理服务器、VPS，一键导入数据，批量远程连接，简单便捷，省时省力！ 软件支持群控，一键同时操控所有电脑，执行命令、运行程序、传输文件、关机重启，尽在弹指一挥间！ 还支持桌面监控，远程窗口智能排布，局部位置放大显示，实时监视每台计算机的系统及程序运行状态！ 您还可以添加自定义信息，设置访问密码，另有标记分组、自定义列、权限管理、备份恢复等强大功能！ 敬请下载，亲自体验！&lt;/p&gt;
&lt;p&gt;看起来不错。。不过是收费的，所以就放弃了。。。有需求的可以看看&lt;/p&gt;
&lt;p&gt;官方网址为：&lt;a href=&quot;http://remotedesktopmanager.cn/&quot;&gt;http://remotedesktopmanager.cn/&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;3389端口修改命令&lt;/h2&gt;
&lt;p&gt;另存为 bat 文件（CRLF 格式）&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;@ECHO OFF
&amp;gt;nul 2&amp;gt;&amp;amp;1 %SYSTEMROOT%\system32\caCLS.exe %SYSTEMROOT%\system32\config\system
if &apos;%errorlevel%&apos; NEQ &apos;0&apos; (
GOTO UACPrompt
) ELSE ( GOTO gotAdmin )
:UACPrompt
ECHO Set UAC = CreateObject^(Shell.Application^) &amp;gt; %temp%\getadmin.vbs
ECHO UAC.ShellExecute %~s0, , , runas, 1 &amp;gt;&amp;gt; %temp%\getadmin.vbs
%temp%\getadmin.vbs
exit /B
:gotAdmin
if exist %temp%\getadmin.vbs ( del %temp%\getadmin.vbs )
title nat.ee
mode con: cols=36 lines=8
color 17
SET wall=HKLM\SYSTEM\ControlSet001\Services\SharedAccess\Parameters\FirewallPolicy\FirewallRules
SET rdp=HKLM\SYSTEM\ControlSet001\Control\Terminal Server
:Menu
CLS
ECHO.
ECHO 1.修改远程桌面端口
ECHO.
ECHO 2.修改用户密码
ECHO.
ECHO 3.重启计算机
ECHO.
choice /C:123 /N /M 请输入你的选择 [1,2,3]: 
if errorlevel 3 GOTO:Restart
if errorlevel 2 GOTO:Password
if errorlevel 1 GOTO:RemotePort
:RemotePort
SET Port=3389
CLS
ECHO 修改远程桌面端口
ECHO.
ECHO 输入^ q ^返回主菜单
ECHO 留空默认使用 3389 端口
ECHO 按回车键 (Enter) 确定
ECHO.
SET /P Port=自定义端口范围(1-65535):
ECHO;%Port%find  &amp;amp;&amp;amp;goto:RemotePort
ECHO;%Port%findstr ^0.*&amp;amp;&amp;amp;goto:RemotePort
IF %Port% == q (GOTO:Menu)
IF %Port% == 0 (GOTO:RemotePort)
IF %Port% ==  (SET Port=3389)
IF %Port% LEQ 65535 (
Reg add %rdp%\Wds\rdpwd\Tds\tcp /v PortNumber /t REG_DWORD /d %Port% /f  &amp;gt; nul
Reg add %rdp%\WinStations\RDP-Tcp /v PortNumber /t REG_DWORD /d %Port% /f  &amp;gt; NUL
Reg add %wall% /v {338933891-3389-3389-3389-338933893389} /t REG_SZ /d v2.29Action=AllowActive=TRUEDir=InProtocol=6LPort=%Port%Name=Remote Desktop(TCP-In) /f
Reg add %wall% /v {338933892-3389-3389-3389-338933893389} /t REG_SZ /d v2.29Action=AllowActive=TRUEDir=InProtocol=17LPort=%Port%Name=Remote Desktop(UDP-In) /f
CLS
ECHO.
ECHO 修改成功。
ECHO.
ECHO 请牢记，你的远程端口是: %Port% 
ECHO.
ECHO 重启计算机生效。
TIMEOUT 5 &amp;gt;NUL
GOTO:Menu
) ELSE (
CLS
ECHO.
ECHO 错误端口: %Port% 
ECHO 大于所设置的范围，
ECHO 请在^1 - 65535^内。
TIMEOUT 3 &amp;gt;NUL
GOTO:RemotePort
)
:Password
SET pwd1=
SET pwd2=
CLS
ECHO 修改当前用户: %username% 的密码
ECHO.
ECHO 输入^ q ^返回主菜单
ECHO 按回车键 (Enter) 确定
ECHO.
SET /p pwd1=请输入新密码: 
IF %pwd1% == q (GOTO:Menu)
CLS
ECHO.
ECHO 输入^ q ^返回主菜单
ECHO 按回车键 (Enter) 确定
ECHO.
SET /p pwd2=请再次输入密码: 
IF %pwd2% == q (GOTO:Menu)
IF %pwd1% == %pwd2% (
CLS
net user %username% %pwd2%PAUSE&amp;amp;&amp;amp;GOTO:Password
ECHO.
TIMEOUT 3 &amp;gt;NUL
GOTO:Menu
) ELSE (
CLS
ECHO.
ECHO 密码错误，请重新输入。
TIMEOUT 3 &amp;gt;NUL
GOTO:Password
)
:Restart
CLS
ECHO 正在倒计时重启……
TIMEOUT /t 5
shutdown.exe /r /f /t 0
EXIT
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>Oracle的Centos7重装为Centos7</title><link>https://fuwari.vercel.app/posts/oracle-centos7-reinstall/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/oracle-centos7-reinstall/</guid><description>此为甲骨文原生 Centos7系统专用！ 2022年 6月 18日 测试： CentOS-7-2022.05.30-0镜像 正常重装   Centos7重装   首次从 C7重装为 C7  将以下代码</description><pubDate>Thu, 16 Apr 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;此为甲骨文原生 Centos7系统专用！ 2022年 6月 18日 测试： CentOS-7-2022.05.30-0镜像 正常重装&lt;/p&gt;
&lt;h2&gt;Centos7重装&lt;/h2&gt;
&lt;h3&gt;首次从 C7重装为 C7&lt;/h3&gt;
&lt;p&gt;将以下代码全部复制后到 ssh 粘贴回车即可&lt;/p&gt;
&lt;p&gt;主要是使用&lt;a href=&quot;https://r2.onepve.com/tools/Oracle-vps/initrd.img&quot;&gt;initrd.img&lt;/a&gt;和&lt;a href=&quot;https://r2.onepve.com/tools/Oracle-vps/vmlinuz&quot;&gt;vmlinuz&lt;/a&gt;来运行网络 VNC&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;yum -y install wget vim lsof net-tools

cat &amp;lt;&amp;lt; EOF &amp;gt;/boot/Reinstall.sh
#!/bin/bash
rm -rf /boot/initrd77.img /boot/vmlinuz77
wget -P /boot/ http://vault.centos.org/7.2.1511/os/x86_64/images/pxeboot/initrd.img -O /boot/initrd77.img
wget -P /boot/ http://vault.centos.org/7.2.1511/os/x86_64/images/pxeboot/vmlinuz -O /boot/vmlinuz77
cat &amp;lt;&amp;lt; EOFEOF&amp;gt;/etc/grub.d/40_custom
#!/bin/sh
exec tail -n +3 \\$0
menuentry VNCInstallCentos7 {
    set root=&apos;(hd0,gpt3)&apos;
    linuxefi /boot/vmlinuz77 inst.vnc inst.vncpassword=11223355 inst.headless ip=dhcp nameserver=114.114.114.114 inst.repo=http://vault.centos.org/7.2.1511/os/x86_64/ inst.lang=en_US inst.keymap=us
    initrdefi /boot/initrd77.img
}

EOFEOF
#sed -i &apos;s/GRUB_DEFAULT=saved/g&apos; /etc/default/grub
grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
grub2-reboot VNCInstallCentos7
EOF

bash /boot/Reinstall.sh
#确认上面代码执行无报错后,重启进入网络安装
reboot
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;请注意！&lt;/p&gt;
&lt;p&gt;/boot/efi/EFI/centos/grub.cfg&lt;/p&gt;
&lt;p&gt;有的是&lt;/p&gt;
&lt;p&gt;/boot/efi/EFI/redhat/grub.cfg&lt;/p&gt;
&lt;p&gt;等待网络核心启动完成，然后用 vnc 连接机器 IP:1密码为 11223355&lt;/p&gt;
&lt;h3&gt;再次从 C7重装为 C7&lt;/h3&gt;
&lt;p&gt;将以下代码全部复制后到 ssh 粘贴回车即可(注意这里的 gpt2,有些机器可能是 gpt3)&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;yum -y install wget vim lsof net-tools

cat &amp;lt;&amp;lt; EOF &amp;gt;/boot/Reinstall.sh
#!/bin/bash
rm -rf /boot/initrd77.img /boot/vmlinuz77
wget -P /boot/ http://vault.centos.org/7.2.1511/os/x86_64/images/pxeboot/initrd.img -O /boot/initrd77.img
wget -P /boot/ http://vault.centos.org/7.2.1511/os/x86_64/images/pxeboot/vmlinuz -O /boot/vmlinuz77
cat &amp;lt;&amp;lt; EOFEOF&amp;gt;/etc/grub.d/40_custom
#!/bin/sh
exec tail -n +3 \\$0
menuentry VNCInstallCentos7 {
    set root=&apos;(hd0,gpt2)&apos;
    linuxefi /vmlinuz77 inst.vnc inst.vncpassword=11223355 inst.headless ip=dhcp nameserver=114.114.114.114 inst.repo=http://vault.centos.org/7.2.1511/os/x86_64/ inst.lang=en_US inst.keymap=us
    initrdefi /initrd77.img
}

EOFEOF
#sed -i &apos;s/GRUB_DEFAULT=saved/g&apos; /etc/default/grub
grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
grub2-reboot VNCInstallCentos7
EOF

bash /boot/Reinstall.sh
#确认上面代码执行无报错后,重启进入网络安装
reboot
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;等待网络核心启动完成，然后用 vnc 连接机器 IP:1密码为 11223355&lt;/p&gt;
&lt;h3&gt;从原生 Linux 系统重装为 C7&lt;/h3&gt;
&lt;p&gt;将以下代码全部复制后到 ssh 粘贴回车即可&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;yum -y install wget vim lsof net-tools

cat &amp;lt;&amp;lt; EOF &amp;gt;/boot/Reinstall.sh
#!/bin/bash
rm -rf /boot/initrd77.img /boot/vmlinuz77
wget -P /boot/ http://vault.centos.org/7.2.1511/os/x86_64/images/pxeboot/initrd.img -O /boot/initrd77.img
wget -P /boot/ http://vault.centos.org/7.2.1511/os/x86_64/images/pxeboot/vmlinuz -O /boot/vmlinuz77
cat &amp;lt;&amp;lt; EOFEOF&amp;gt;/etc/grub.d/40_custom
#!/bin/sh
exec tail -n +3 \\$0
menuentry VNCInstallCentos7 {
    set root=&apos;(hd0,gpt3)&apos;
    linuxefi /boot/vmlinuz77 inst.vnc inst.vncpassword=11223355 inst.headless ip=dhcp nameserver=114.114.114.114 inst.repo=http://vault.centos.org/7.2.1511/os/x86_64/ inst.lang=en_US inst.keymap=us
    initrdefi /boot/initrd77.img
}

EOFEOF
#sed -i &apos;s/GRUB_DEFAULT=saved/g&apos; /etc/default/grub
grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
grub2-reboot VNCInstallCentos7
EOF

bash /boot/Reinstall.sh
#确认上面代码执行无报错后,重启进入网络安装
reboot
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;等待网络核心启动完成，然后用 vnc 连接机器 IP:1密码为 11223355&lt;/p&gt;
&lt;h2&gt;Win7&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;此 DD 包仅适用于 Oracle 甲骨文 Ubuntu DD Win 使用&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;说明：Oracle 是采用 UEFI 启动，普通 DD 包均不支持 UEFI 启动&lt;/p&gt;
&lt;p&gt;DD Windows 7 64位旗舰精简版 Oracle 甲骨文专用 [账户 Administrator 密码 www.nat.ee]&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apt-get install -y xz-utils openssl gawk file
wget --no-check-certificate -qO InstallNET.sh &apos;https://moeclub.org/attachment/LinuxShell/InstallNET.sh&apos; &amp;amp;&amp;amp; bash InstallNET.sh -dd &apos;https://api.moeclub.org/GoogleDrive/1NHKdm3xfQ3HySNCGvrzgdz7RMVCI1qGy&apos;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Debian&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;甲骨文云 / Oracle Cloud DD Debian 10/11&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/bohanyang/debi&quot;&gt;https://github.com/bohanyang/debi&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;暂不支持 Oracle Linux 作为原系统。创建新机器时请选择 Ubuntu 20.04或 18.04系统模板。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 登录名：root，密码：Kot6qKWr8K3bS7pKno，可自行修改
curl -fLO https://raw.githubusercontent.com/bohanyang/debi/master/debi.sh &amp;amp;&amp;amp; chmod a+rx debi.sh

./debi.sh --cdn --network-console --ethx --bbr --user root --password Kot6qKWr8K3bS7pKno
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--bbr&lt;/code&gt; 开启 BBR&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--ethx&lt;/code&gt; 网卡名称使用传统形式，如 &lt;code&gt;eth0&lt;/code&gt; 而不是 &lt;code&gt;ens3&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--cloud-kernel&lt;/code&gt; 安装占用空间较小的 &lt;code&gt;cloud&lt;/code&gt; 内核，但可能会导致 UEFI 启动的机器（如 Oracle、Azure 及 Hyper-V、Google Cloud 等）VNC 黑屏。BIOS 启动的普通 VPS 则没有此问题。&lt;/li&gt;
&lt;li&gt;默认使用 Debian 官方 CDN 镜像源（deb.debian.org），添加 &lt;code&gt;--china&lt;/code&gt; 可使用阿里云镜像源。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果没有报错可以重启：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 执行重启，开始 DD Debian 11
shutdown -r now
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;约 30秒后可以尝试 SSH 登录 &lt;code&gt;installer&lt;/code&gt; 用户名，密码与之前设置的相同。如果成功连接，可以按 Ctrl-A 然后再按 4监控安装日志。安装完成后会自动重启进入新系统。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;萌咖一键网络重装为 debian9+/ubuntu16.04+&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;重装后 &lt;code&gt;SSH&lt;/code&gt; 登录，用户名 &lt;code&gt;root&lt;/code&gt;, 密码：&lt;code&gt;MoeClub.org&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#先切换到root权限
sudo -i
运行:
#Debian/Ubuntu:
apt-get update
#RedHat/CentOS:
yum update
#确保安装了所需软件:
#Debian/Ubuntu:
apt-get install -y xz-utils openssl gawk file
#RedHat/CentOS:
yum install -y xz openssl gawk file
#下载及说明:
wget --no-check-certificate -qO InstallNET.sh &apos;https://moeclub.org/attachment/LinuxShell/InstallNET.sh&apos; &amp;amp;&amp;amp; chmod a+x InstallNET.sh
Usage:
        bash InstallNET.sh      -d/--debian [dist-name]
                                -u/--ubuntu [dist-name]
                                -c/--centos [dist-version]
                                -v/--ver [32/i38664/amd64]
                                --ip-addr/--ip-gate/--ip-mask
                                -apt/-yum/--mirror
                                -dd/--image
                                -a/-m
# dist-name: 发行版本代号
# dist-version: 发行版本号
# -apt/-yum/--mirror : 使用定义镜像
# -a/-m : 询问是否能进入VNC自行操作. -a 为不提示(一般用于全自动安装), -m 为提示.
#安装debian9 (-firmware 额外驱动支持)
bash &amp;lt;(wget --no-check-certificate -qO- &apos;https://moeclub.org/attachment/LinuxShell/InstallNET.sh&apos;) -d 9 -v 64 -a -firmware
#安装debian9 (-firmware 额外驱动支持)(阿里云镜像)
bash &amp;lt;(wget --no-check-certificate -qO- &apos;https://moeclub.org/attachment/LinuxShell/InstallNET.sh&apos;) -d 9 -v 64 -a  -firmware --mirror &apos;http://mirrors.aliyun.com/debian/&apos;
#安装ubuntu16.04 (-firmware 额外驱动支持)
bash &amp;lt;(wget --no-check-certificate -qO- &apos;https://moeclub.org/attachment/LinuxShell/InstallNET.sh&apos;) -u 16.04 -v 64 -a -firmware
#安装ubuntu18.10 (-firmware 额外驱动支持)
bash &amp;lt;(wget --no-check-certificate -qO- &apos;https://moeclub.org/attachment/LinuxShell/InstallNET.sh&apos;) -u 18.10 -v 64 -a -firmware
#备用
https://www.ucblog.net/shell/InstallNET.sh
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Debian-ARM&lt;/h2&gt;
&lt;p&gt;甲骨文云 / Oracle Cloud 新配额 ARM DD Debian 10/11&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/bohanyang/debi&quot;&gt;https://github.com/bohanyang/debi&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;暂不支持 Oracle Linux 作为原系统。创建新机器时请选择 Ubuntu 20.04或 18.04系统模板。&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 登录名：root，密码：Kot6qKWr8K3bS7pKno，可自行修改

curl -fLO https://raw.githubusercontent.com/bohanyang/debi/master/debi.sh &amp;amp;&amp;amp; chmod a+rx debi.sh

./debi.sh  --cdn --network-console --bbr --ethx --architecture arm64 --user root --password Kot6qKWr8K3bS7pKno
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--bbr&lt;/code&gt; 开启 BBR&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--ethx&lt;/code&gt; 网卡名称使用传统形式，如 &lt;code&gt;eth0&lt;/code&gt; 而不是 &lt;code&gt;ens3&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--cloud-kernel&lt;/code&gt; 安装占用空间较小的 &lt;code&gt;cloud&lt;/code&gt; 内核，但可能会导致 UEFI 启动的机器（如 Oracle、Azure 及 Hyper-V、Google Cloud 等）VNC 黑屏。BIOS 启动的普通 VPS 则没有此问题。&lt;/li&gt;
&lt;li&gt;默认使用 Debian 官方 CDN 镜像源（deb.debian.org），添加 &lt;code&gt;--china&lt;/code&gt; 可使用阿里云镜像源。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果没有报错可以重启：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 执行重启，开始 DD Debian 11
shutdown -r now
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;约 30秒后可以尝试 SSH 登录 &lt;code&gt;installer&lt;/code&gt; 用户名，密码与之前设置的相同。如果成功连接，可以按 Ctrl-A 然后再按 4监控安装日志。安装完成后会自动重启进入新系统。&lt;/p&gt;
&lt;h2&gt;Centos7开启 bbr&lt;/h2&gt;
&lt;p&gt;作者测试成功的方法，供大家参考&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;wget https://elrepo.org/linux/kernel/el7/x86_64/RPMS/kernel-ml-5.18.5-1.el7.elrepo.x86_64.rpm
yum install -y ./kernel-ml-5.18.5-1.el7.elrepo.x86_64.rpm

# 重新创建内核配置
grub2-mkconfig -o /boot/grub2/grub.cfg

# 查看系统中已有内核：
awk -F\\&apos; \&apos;$1==menuentry  {print i++  :  $2}\&apos; /boot/grub2/grub.cfg

# 调整默认内核
grub2-set-default 0

# 开启BBR+fq
echo net.core.default_qdisc=fq &amp;gt;&amp;gt; /etc/sysctl.conf
echo net.ipv4.tcp_congestion_control=bbr &amp;gt;&amp;gt; /etc/sysctl.conf

# 关闭selinux
vi /etc/sysconfig/selinux
SELINUX=disabled

# 重启
reboot
# 然后查看bbr状态
lsmod grep bbr
sysctl net.ipv4.tcp_available_congestion_control
#------------------------------------------------------------
# 显示所有内核
rpm -qa  grep kernel
# 最后，删除不能启动的内核以及旧内核
yum remove kernel-ml-5.5.7-1.el7.elrepo.x86_64
yum remove kernel-3.10.0-327.el7.x86_64
# 清理之后可能需要重新创建内核配置
grub2-mkconfig -o /boot/grub2/grub.cfg

# 其他
# 开启BBR+cake
echo net.core.default_qdisc=cake &amp;gt;&amp;gt; /etc/sysctl.conf
echo net.ipv4.tcp_congestion_control=bbr &amp;gt;&amp;gt; /etc/sysctl.conf
# 然后查看bbr状态
sysctl net.ipv4.tcp_available_congestion_control
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;error&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Error, Not found interfaces config.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;mkdir /etc/network/interfaces.d
echo # This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug ens3
iface ens3 inet dhcp

 &amp;gt; /etc/network/interfaces
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>自动检测服务器使用流量并执行命令脚本</title><link>https://fuwari.vercel.app/posts/vnstat-shell/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/vnstat-shell/</guid><description>脚本环境  kill 自己换命令 先安装 python  bash yum install -y epel-release yum install -y vnstat service vnstat s</description><pubDate>Tue, 14 Apr 2020 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;脚本环境&lt;/h2&gt;
&lt;p&gt;kill 自己换命令 先安装 python&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;yum install -y epel-release
yum install -y vnstat
service vnstat start
chkconfig vnstat on
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;脚本 xxx.py&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;#coding=utf-8

limit_total=0# limit_total 上传+下载的流量限制，单位GB，如果不限制就是0，如果限制1T就是1024
limit_in=0# limit_in 下载的流量限制，单位GB，如果不限制就是0，如果限制1T就是1024
limit_out=0# limit_out 上传的流量限制，单位GB，如果不限制就是0，如果限制1T就是1024
sleep=60#多久检查一次，单位是秒

import os
import time
NET_IN = 0
NET_OUT = 0

while True:
    vnstat=os.popen(&apos;vnstat --dumpdb&apos;).readlines()
    for line in vnstat:
        if line[0:4] == m;0;:
            mdata=line.split(;)
            NET_IN=int(mdata[3])/1024
            NET_OUT=int(mdata[4])/1024
            break

#    kill=这里写你要执行的命令
 kill=poweroff
    if (limit_total != 0 and (NET_IN+NET_OUT)&amp;gt;=limit_total):
        os.system(kill)
        break
    elif (limit_in != 0 and NET_IN&amp;gt;=limit_in):
        os.system(kill)
        break
    elif (limit_out != 0 and NET_OUT&amp;gt;=limit_out):
        os.system(kill)
        break

    time.sleep(sleep)
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;运行&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;nohup python xxx.py &amp;amp;
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>Chrome浏览器关闭 QUIC</title><link>https://fuwari.vercel.app/posts/quic/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/quic/</guid><description>Chrome 浏览器关闭 QUIC，避免部分地区运营商 UDP QOS 对速度的影响  注意：QUIC 适用于一切基于 Chromium 的浏览器，如果不是这个内核的浏览器就没必要看了   QUIC </description><pubDate>Mon, 13 Apr 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Chrome 浏览器关闭 QUIC，避免部分地区运营商 UDP QOS 对速度的影响&lt;/p&gt;
&lt;p&gt;注意：QUIC 适用于一切基于 Chromium 的浏览器，如果不是这个内核的浏览器就没必要看了&lt;/p&gt;
&lt;h3&gt;QUIC 是什么&lt;/h3&gt;
&lt;p&gt;QUIC（Quick UDP Internet Connection）是谷歌制定的一种基于 UDP 的低时延互联网传输层协议。&lt;/p&gt;
&lt;p&gt;我们知道，TCP/IP 协议族是互联网的基础。其中传输层协议包括 TCP 和 UDP 协议。与 TCP 协议相比，UDP 更为轻量，但是错误校验也要少得多。这意味着 UDP 往往效率更高（不经常跟服务器端通信查看数据包是否送达或者按序），但是可靠性比不上 TCP。通常游戏、流媒体等应用均采用 UDP，而网页、邮件、远程登录等大部分的应用均采用 TCP。&lt;/p&gt;
&lt;p&gt;—— 截取自 &lt;a href=&quot;http://geek.csdn.net&quot;&gt;http://geek.csdn.net&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;而谷歌就是结合这两种协议的优势，做出了 QUIC，好吧，其实说这么多也没用，我们只需要知道 QUIC 是谷歌开发出来更好的协议就行了。&lt;/p&gt;
&lt;h3&gt;为什么要关闭&lt;/h3&gt;
&lt;p&gt;那既然更好，为什么要关闭呢？这就是因为 QUIC 为了实现 UDP 的高效，会把一些 TCP 转为 UDP，但是在国内部分地区的运营商都会针对 UDP 协议 QOS 限速或者丢包，这就导致 UDP 效率低下，或许速度会比正常使用 TCP 协议还慢很多。&lt;/p&gt;
&lt;p&gt;而谷歌的服务器，例如 Google 搜索、优土鳖视频等，都部署了 QUIC 服务，这意味着当你使用已开启 QUIC 功能的基于 Chromium 内核浏览器访问谷歌网站的时候，会尝试使用 QUIC 方式传输数据。而碰巧你当地运营商对 UDP 协议歧视，然后疯狂限速或丢包，这时候你的速度就会很感人。&lt;/p&gt;
&lt;p&gt;注意：各地区的运营商对 UDP 协议的态度不一样，有的地区 QOS 严重，有的地区则很轻，所以关闭 QUIC 只对部分地区用户会有加速效果！&lt;/p&gt;
&lt;p&gt;又或者你使用少年扶墙，而服务端没有开启 UDP 转发功能(或者防火墙没开放 UDP)，那么你可能会遇到打开 优土鳖视频后，视频会一直缓冲无法加载，或者是首次打开总是慢很多（因为浏览器在尝试）。&lt;/p&gt;
&lt;p&gt;目前看来，QUIC 未普及开，并且运营商也依然我行我素的歧视 UDP 协议，所以还是先关闭的好。&lt;/p&gt;
&lt;h3&gt;如何关闭 QUIC&lt;/h3&gt;
&lt;p&gt;首先打开你基于 Chromium 内核的浏览器，地址栏输入：chrome://flags/#enable-quic&lt;/p&gt;
&lt;p&gt;然后就会看到如下图（分别是英文和中文两种语言），在下拉框中可以选择 默认/已启用/已禁用 (Default/Enabled/Disabled) 三个选项，我们只需要把选项改为 已禁用(Disabled) 即可。&lt;/p&gt;
&lt;p&gt;修改后，需要重启浏览器生效。&lt;/p&gt;
&lt;p&gt;重启后再试一下访问谷歌网站，例如优土鳖视频，看一看是否有速度提升（看当地运营商 UDP 协议 QOS 情况）。&lt;/p&gt;
</content:encoded></item><item><title>MySQL表结构自动同步工具_mysql-schema-sync</title><link>https://fuwari.vercel.app/posts/mysql-schema-sync/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/mysql-schema-sync/</guid><description>mysql-schema-sync 是一款使用 Go 开发跨平台的 MySQL 表结构自动同步工具。  用于将 线上 数据库结构变化同步到 本地环境   mysql-schema-sync 支持功能：</description><pubDate>Sun, 12 Apr 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;mysql-schema-sync 是一款使用 Go 开发跨平台的 MySQL 表结构自动同步工具。&lt;/p&gt;
&lt;p&gt;用于将 &lt;code&gt;线上&lt;/code&gt; 数据库结构&lt;strong&gt;变化&lt;/strong&gt;同步到 &lt;code&gt;本地环境&lt;/code&gt;!&lt;/p&gt;
&lt;h3&gt;mysql-schema-sync 支持功能：&lt;/h3&gt;
&lt;p&gt;只能同步表结构，无法同步表内数据&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;同步新表&lt;/li&gt;
&lt;li&gt;同步字段 变动：新增、修改&lt;/li&gt;
&lt;li&gt;同步索引 变动：新增、修改&lt;/li&gt;
&lt;li&gt;支持预览（只对比不同步变动）&lt;/li&gt;
&lt;li&gt;邮件通知变动结果&lt;/li&gt;
&lt;li&gt;支持屏蔽更新表、字段、索引、外键&lt;/li&gt;
&lt;li&gt;支持本地比线上额外多一些表、字段、索引、外键&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;项目地址：&lt;a href=&quot;https://github.com/hidu/mysql-schema-sync&quot;&gt;https://github.com/hidu/mysql-schema-sync&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;安装&lt;/h3&gt;
&lt;p&gt;需要先安装 go 环境：&lt;a href=&quot;https://www.runoob.com/go/go-environment.html&quot;&gt;https://www.runoob.com/go/go-environment.html&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;wget https://dl.google.com/go/go1.14.2.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.14.2.linux-amd64.tar.gz
echo &apos;export PATH=$PATH:/usr/local/go/bin&apos; &amp;gt;&amp;gt; /root/.bash_profile
source ~/.bash_profile
go version
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;安装 mysql-schema-sync (cd 在哪里就安装到哪里)&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cd /home
go get -u github.com/hidu/mysql-schema-sync
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;默认运行位置为：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/home/go/bin/mysql-schema-sync
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;配置&lt;/h3&gt;
&lt;p&gt;参考 默认配置文件 config.json 配置同步源、目的地址。 修改邮件接收人 当运行失败或者有表结构变化的时候你可以收到邮件通知。&lt;/p&gt;
&lt;p&gt;默认情况不会对多出的&lt;strong&gt;表、字段、索引、外键&lt;/strong&gt;删除。若需要删除&lt;strong&gt;字段、索引、外键&lt;/strong&gt; 可以使用 &lt;code&gt;-drop&lt;/code&gt; 参数。&lt;/p&gt;
&lt;p&gt;配置示例(config.json):&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{
      //source：同步源
      source:test:test@(127.0.0.1:3306)/test_0,
      //dest：待同步的数据库
      dest:test:test@(127.0.0.1:3306)/test_1,
      //alter_ignore： 同步时忽略的字段和索引
      alter_ignore:{
        tb1*:{
            column:[aaa,a*],
            index:[aa],
            foreign:[]
        }
      },
      //  tables: table to check schema,default is all.eg :[order_*,goods]
      tables:[],
      //有变动或者失败时，邮件接收人
      email:{
          send_mail:false,
         smtp_host:smtp.163.com:25,
         from:xxx@163.com,
         password:xxx,
         to:xxx@163.com
      }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;一键写配置文件&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cat &amp;gt; /home/go/bin/config.json&amp;lt;&amp;lt;-EOF
{
      //source：同步源
      source:test:test@(127.0.0.1:3306)/test_0,
      //dest：待同步的数据库
      dest:test:test@(127.0.0.1:3306)/test_1,
      //alter_ignore： 同步时忽略的字段和索引
      alter_ignore:{
        tb1*:{
            column:[aaa,a*],
            index:[aa],
            foreign:[]
        }
      },
      //  tables: table to check schema,default is all.eg :[order_*,goods]
      tables:[],
      //有变动或者失败时，邮件接收人
      email:{
          send_mail:false,
         smtp_host:smtp.163.com:25,
         from:xxx@163.com,
         password:xxx,
         to:xxx@163.com
      }
}
EOF
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;json 配置项说明&lt;/h3&gt;
&lt;p&gt;source: 数据库同步源 dest: 待同步的数据库 tables： 数组，配置需要同步的表，为空则是不限制，eg: [goods,order_&lt;em&gt;] alter_ignore： 忽略修改的配置，表名为 tableName，可以配置 column 和 index，支持通配符&lt;/em&gt; email ： 同步完成后发送邮件通知信息&lt;/p&gt;
&lt;h3&gt;运行&lt;/h3&gt;
&lt;p&gt;直接运行&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mysql-schema-sync -conf mydb_conf.json -sync
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;预览并生成变更 sql&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mysql-schema-sync -conf mydb_conf.json 2&amp;gt;/dev/null &amp;gt;db_alter.sql
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;使用 shell 调度&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;bash check.sh
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;每个 json 文件配置一个目的数据库，check.sh 脚本会依次运行每份配置。 log 存储在当前的 log 目录中。&lt;/p&gt;
&lt;h3&gt;自动定时运行&lt;/h3&gt;
&lt;p&gt;添加 crontab 任务&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;30 * * * * cd /your/path/xxx/ &amp;amp;&amp;amp; bash check.sh &amp;gt;/dev/null 2&amp;gt;&amp;amp;1
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;参数说明&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;mysql-schema-sync [-conf] [-dest] [-source] [-sync] [-drop]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;说明：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# mysql-schema-sync -help  
  -conf string
        配置文件名称
  -dest string
        待同步的数据库 eg: test@(10.10.0.1:3306)/test_1
        该项不为空时，忽略读入 -conf参数项
  -drop
        是否对本地多出的字段和索引进行删除 默认否
  -source string
        mysql 同步源,eg test@(127.0.0.1:3306)/test_0
  -sync
        是否将修改同步到数据库中去，默认否
  -tables string
        待检查同步的数据库表，为空则是全部
        eg : product_base,order_*
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>wordpress个人自定义</title><link>https://fuwari.vercel.app/posts/wp-diy/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/wp-diy/</guid><description>哀悼纪念日  css html { filter: grayscale100%; -webkit-filter: grayscale100%; -moz-filter: grayscale100%; </description><pubDate>Sat, 04 Apr 2020 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;哀悼纪念日&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;html {
filter: grayscale(100%);
-webkit-filter: grayscale(100%);
-moz-filter: grayscale(100%);
-ms-filter: grayscale(100%);
-o-filter: grayscale(100%);
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;放置到 外观→自定义→额外 css&lt;/p&gt;
&lt;h2&gt;代码完整显示&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;article pre.wp-block-code code{
    max-height: 100%!important;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;放置到 外观→自定义→额外 css&lt;/p&gt;
&lt;h2&gt;保护后台登录&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;//保护后台登录
add_action(&apos;login_enqueue_scripts&apos;,&apos;login_protection&apos;);
function login_protection(){
if($_GET[&apos;hello&apos;] != &apos;Tr4gg9Y3gBUX&apos;)header(&apos;Location: http://任意其他网站或者网站首页/&apos;);
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;将上方的代码添加至 WordPress 当前使用主题文件夹下的 functions.php 文件即可 这样只有打开 你的网站/wp-login.php?hello=Tr4gg9Y3gBUX 才会打开登录页，否则就会自动跳转到后面的网站&lt;/p&gt;
&lt;h2&gt;WordPress 彻底禁用上传媒体图片自动生成缩略图及多尺寸图片&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;// 禁用自动生成的图片尺寸
function shapeSpace_disable_image_sizes($sizes) {
unset($sizes[&apos;thumbnail&apos;]);    // disable thumbnail size
unset($sizes[&apos;medium&apos;]);       // disable medium size
unset($sizes[&apos;large&apos;]);        // disable large size
unset($sizes[&apos;medium_large&apos;]); // disable medium-large size
unset($sizes[&apos;1536x1536&apos;]);    // disable 2x medium-large size
unset($sizes[&apos;2048x2048&apos;]);    // disable 2x large size
return $sizes;
}
add_action(&apos;intermediate_image_sizes_advanced&apos;, &apos;shapeSpace_disable_image_sizes&apos;);
// 禁用缩放尺寸
add_filter(&apos;big_image_size_threshold&apos;, &apos;__return_false&apos;);
// 禁用其他图片尺寸
function shapeSpace_disable_other_image_sizes() {
remove_image_size(&apos;post-thumbnail&apos;); // disable images added via set_post_thumbnail_size() 
remove_image_size(&apos;another-size&apos;);   // disable any other added image sizes
}
add_action(&apos;init&apos;, &apos;shapeSpace_disable_other_image_sizes&apos;);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;将上方的代码添加至 WordPress 当前使用主题文件夹下的 functions.php 文件即可&lt;/p&gt;
&lt;h2&gt;给 WordPress 文章 ID 重新排序&lt;/h2&gt;
&lt;p&gt;原文地址：&lt;a href=&quot;https://fairysen.com/171.html&quot;&gt;https://fairysen.com/171.html&lt;/a&gt; &amp;gt; ✅ 先备份数据库  &amp;gt; 💡删除冗余的修订版本和自动保存  插件使用 &lt;strong&gt;WP-Sweep&lt;/strong&gt; 或 手动清除代码：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;DELETE a,b,c
FROM wp_posts a
LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id)
LEFT JOIN wp_postmeta c ON (a.ID = c.post_id)
WHERE a.post_type = &apos;revision&apos;;
DELETE FROM wp_postmeta WHERE meta_key = &apos;_edit_lock&apos;;
DELETE FROM wp_postmeta WHERE meta_key = &apos;_edit_last&apos;;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;重新排列不连续的文章 ID 复制 php 脚本代码至 id.php，上传到你主机根目录下 访问：&lt;a href=&quot;http://xn--6qqv7i2xdt95bpsedvh/id.php&quot;&gt;http://你的网站域名/id.php&lt;/a&gt; ，即可达到重新排序的效果，从 1开始。 &amp;gt; ✅同时修改https://onepve.com 为你的域名&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;?php /** https://fairysen.com/171.html */
/** 引入网站配置文件，这里主要获得数据库连接信息及常规操作类 */
require_once &apos;./wp-config.php&apos;;
function change_post_id($id)
{
    global $convertedrows, $wpdb;
    /** 修改文章ID关联的类别、标签、自定义字段、评论各表，prefix是您安装时设置的数据库表前缀 */
    $wpdb-?&amp;gt;query(&apos;update &apos; . $wpdb-&amp;gt;prefix . &apos;posts set ID = &apos; . $convertedrows . &apos; where ID = &apos; . $id);
    $wpdb-&amp;gt;query(&apos;update &apos; . $wpdb-&amp;gt;prefix . &apos;posts set guid = https://onepve.com/?p=&apos; . $convertedrows . &apos; where ID = &apos; . $convertedrows . &apos; and post_type = post&apos;);
    $wpdb-&amp;gt;query(&apos;update &apos; . $wpdb-&amp;gt;prefix . &apos;term_relationships set object_id = &apos; . $convertedrows . &apos; where object_id = &apos; . $id);
    $wpdb-&amp;gt;query(&apos;update &apos; . $wpdb-&amp;gt;prefix . &apos;postmeta set post_id = &apos; . $convertedrows . &apos; where post_id = &apos; . $id);
    $wpdb-&amp;gt;query(&apos;update &apos; . $wpdb-&amp;gt;prefix . &apos;comments set comment_post_ID = &apos; . $convertedrows . &apos; where comment_post_ID = &apos; . $id);
    $convertedrows++;
}
/** ID默认由1开始 */
$convertedrows = 1;
/** 查询数据库文章表所有记录 */
$sql_query = &apos;SELECT ID FROM &apos; . $table_prefix . &apos;posts ORDER BY ID ASC&apos;;
//echo &apos;&apos; . $sql_query . &apos;\n&apos;;
$all_post_ids = $wpdb-&amp;gt;get_results($sql_query);
/** 有返回值时则执行循环 */
if (is_array($all_post_ids)) {
    foreach ($all_post_ids as $post_id) {
        change_post_id($post_id-&amp;gt;ID);
    }
}
/** 重新设置文章ID自动增加的起点 */
$wpdb-&amp;gt;query(&apos;alter table &apos; . $table_prefix . &apos;posts AUTO_INCREMENT = &apos; . $convertedrows);
echo &apos;Total:&apos; . $convertedrows . &apos;, It\&apos;s ok!!! &apos;;
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>Google Voice保号</title><link>https://fuwari.vercel.app/posts/google-voice/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/google-voice/</guid><description>订阅广告短信  服务商名称  短信号码  发送短信  短信数量（每月）  AutoZone  67135  AUTO  4  Staples  555444  SIGNUP  6  Google Vo</description><pubDate>Mon, 30 Mar 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;订阅广告短信&lt;/p&gt;
&lt;p&gt;服务商名称&lt;/p&gt;
&lt;p&gt;短信号码&lt;/p&gt;
&lt;p&gt;发送短信&lt;/p&gt;
&lt;p&gt;短信数量（每月）&lt;/p&gt;
&lt;p&gt;AutoZone&lt;/p&gt;
&lt;p&gt;67135&lt;/p&gt;
&lt;p&gt;AUTO&lt;/p&gt;
&lt;p&gt;4&lt;/p&gt;
&lt;p&gt;Staples&lt;/p&gt;
&lt;p&gt;555444&lt;/p&gt;
&lt;p&gt;SIGNUP&lt;/p&gt;
&lt;p&gt;6&lt;/p&gt;
&lt;p&gt;Google Voice 回收政策很迷 虽然官方讲的是 如果 6个月内没有拨打或接听电话、发送或接收短信将会回收&lt;/p&gt;
&lt;p&gt;但是很多人经常收短信也被回收了，所以想稳妥的话，短信+程序一起来全用上&lt;/p&gt;
&lt;p&gt;账号多的话，搞个 excel 统计下，没事隔一俩月登录上去看看 发发短信打个电话&lt;/p&gt;
</content:encoded></item><item><title>docker</title><link>https://fuwari.vercel.app/posts/docker/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/docker/</guid><description>自动安装   卸载旧版本  bash  CentOS yum remove docker \                   docker-client \                   d</description><pubDate>Thu, 26 Mar 2020 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;自动安装&lt;/h2&gt;
&lt;h3&gt;卸载旧版本&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;# CentOS
yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;# Debian
apt-get remove docker \
               docker-engine \
               docker.io
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;使用脚本自动安装&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;curl -fsSL get.docker.com -o get-docker.sh
sh get-docker.sh --mirror Aliyun
# sh get-docker.sh --mirror AzureChinaCloud
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;启动 Docker CE&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;#设置开机自启动
systemctl enable docker

#启动docker
systemctl start docker
或
service docker start
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;中国源&lt;/h2&gt;
&lt;p&gt;Docker 很多镜像动不动就 1G 或几百 M，官方经常掉线。所以只能换国内源。&lt;/p&gt;
&lt;p&gt;国内的镜像源有&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;docker 官方中国区 &lt;code&gt;https://registry.docker-cn.com&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;网易 &lt;code&gt;http://hub-mirror.c.163.com&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;ustc &lt;code&gt;http://docker.mirrors.ustc.edu.cn&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;阿里云 &lt;code&gt;http://&amp;lt;你的 ID&amp;gt;.mirror.aliyuncs.com&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;注意&lt;code&gt;registry-mirrors&lt;/code&gt;千万不要用&lt;code&gt;https&lt;/code&gt;，而是用&lt;code&gt;http&lt;/code&gt;，否则会显示&lt;code&gt;No certs for egitstry.docker.com&lt;/code&gt;， &lt;code&gt;insecure-registries&lt;/code&gt;不要任何&lt;code&gt;http&lt;/code&gt;头，否则无法通过。&lt;/p&gt;
&lt;p&gt;通用的方法就是编辑&lt;code&gt;/etc/docker/daemon.json&lt;/code&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cat &amp;gt; /etc/docker/daemon.json&amp;lt;&amp;lt;-EOF
{
  registry-mirrors : [
    http://ovfftd6p.mirror.aliyuncs.com,
    http://registry.docker-cn.com,
    http://docker.mirrors.ustc.edu.cn,
    http://hub-mirror.c.163.com
  ],
  insecure-registries : [
    registry.docker-cn.com,
    docker.mirrors.ustc.edu.cn
  ],
  debug : true,
  experimental : true
}
EOF
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后重启 docker 的 daemon 即可。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;systemctl restart docker
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;graphdriver&lt;/h2&gt;
&lt;p&gt;failed to start daemon: error initializing graphdriver: prior storage driver devicemapper is deprecated and will be removed in a future release; update the the daemon configuration and explicitly&lt;/p&gt;
&lt;p&gt;修复方法： nano /etc/docker/daemon.json&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{ storage-driver: devicemapper }
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;保存- 重新启动 Docker.&lt;/p&gt;
&lt;p&gt;一键添加：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cat &amp;gt; /etc/docker/daemon.json&amp;lt;&amp;lt;-EOF
{ storage-driver: devicemapper } 
EOF
systemctl restart docker
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>护眼颜色RGB设置</title><link>https://fuwari.vercel.app/posts/rgb-good/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/rgb-good/</guid><description>网上流行护眼色的 RGB 值和颜色代码  绿豆沙色能有效的减轻长时间用电脑的用眼疲劳！ 色调：85，饱和度：123，亮度：205； RGB 颜色红：199，绿：237，蓝：204； 十六进制颜色：C7</description><pubDate>Thu, 26 Mar 2020 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;网上流行护眼色的 RGB 值和颜色代码&lt;/h2&gt;
&lt;p&gt;绿豆沙色能有效的减轻长时间用电脑的用眼疲劳！ 色调：85，饱和度：123，亮度：205； RGB 颜色红：199，绿：237，蓝：204； 十六进制颜色：#C7EDCC 或用#CCE8CF&lt;/p&gt;
&lt;p&gt;其他几种电脑窗口视力保护色：&lt;/p&gt;
&lt;p&gt;银河白 #FFFFFF RGB(255, 255, 255)&lt;/p&gt;
&lt;p&gt;杏仁黄 #FAF9DE RGB(250, 249, 222)&lt;/p&gt;
&lt;p&gt;秋叶褐 #FFF2E2 RGB(255, 242, 226)&lt;/p&gt;
&lt;p&gt;胭脂红 #FDE6E0 RGB(253, 230, 224)&lt;/p&gt;
&lt;p&gt;青草绿 #E3EDCD RGB(227, 237, 205)&lt;/p&gt;
&lt;p&gt;海天蓝 #DCE2F1 RGB(220, 226, 241)&lt;/p&gt;
&lt;p&gt;葛巾紫 #E9EBFE RGB(233, 235, 254)&lt;/p&gt;
&lt;p&gt;极光灰 #EAEAEF RGB(234, 234, 239)&lt;/p&gt;
&lt;p&gt;另外： 电脑管家的护眼色也好用。 （&lt;strong&gt;可以通过 QQ 截图查看当前的颜色值&lt;/strong&gt;）&lt;/p&gt;
&lt;p&gt;R: 204 G: 232 B: 207&lt;/p&gt;
&lt;hr /&gt;
</content:encoded></item><item><title>AdGuard Home</title><link>https://fuwari.vercel.app/posts/adguard-home/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/adguard-home/</guid><description>什么是 AdGuard Home  AdGuard Home 是一款全网广告拦截与反跟踪软件，AdGuard Home 项目是著名广告拦截器提供商 AdGuard 开源的一个 DNS Server 版</description><pubDate>Mon, 23 Mar 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;什么是 AdGuard Home&lt;/p&gt;
&lt;p&gt;AdGuard Home 是一款全网广告拦截与反跟踪软件，AdGuard Home 项目是著名广告拦截器提供商 AdGuard 开源的一个 DNS Server 版本。AdGuard Home 可以将广告与追踪相关的域名屏蔽，同时你不再需要安装任何客户端软件。AdGuard Home 的工作原理是在 DNS 的域名解析过程里拦截网页上的广告。&lt;/p&gt;
&lt;p&gt;简单来说 AdGuard Home 是一个支持广告过滤和家长控制的开源公共 DNS 服务，如同 Google 的公共 DNS 服务 8.8.8.8。AdGuard Home 同时也支持 DNS over TLS 和 DNS over HTTPS。&lt;/p&gt;
&lt;p&gt;项目地址：&lt;a href=&quot;https://github.com/AdguardTeam/AdGuardHome&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://github.com/AdguardTeam/AdGuardHome&quot;&gt;https://github.com/AdguardTeam/AdGuardHome&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;AdGuard Home 的主要功能介绍&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;拦截随处可见的广告&lt;/li&gt;
&lt;li&gt;注重隐私保护&lt;/li&gt;
&lt;li&gt;家庭保护模式&lt;/li&gt;
&lt;li&gt;自定义过滤规则&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;⚠️请注意！ 如果在天朝使用。请不要提供服务给外网(在内网搭建并且仅提供内网使用除外) 依据《中华人民共和国电信条例》和《电信业务经营许可管理办法 》相关规定，提供互联网域名解析服务业务需获取许可资质《编码和规程转换业务许可证》。在未获取相关经营许可证的情况下，不得向第三方提供域名解析服务。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;安装 AdGuard Home 二进制版本&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;wget https://static.adguard.com/adguardhome/release/AdGuardHome_linux_amd64.tar.gz
tar -zxvf AdGuardHome_linux_amd64.tar.gz

# 为了方便使用，我们将二进制文件拷贝到 PATH 所包含的位置
cp AdGuardHome/AdGuardHome /usr/local/bin/

# 启动 AdGuard Home
AdGuardHome
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;安装完成后，将绑定成服务便于操作&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# Linux 下使用的服务管理器是 systemd 、Upstart 或 SysV，macOS 下使用的服务管理器是 Launchd。
AdGuardHome -s install
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;服务安装后好，你可以使用以下命令来管理它。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 启动 AdGuardHome 服务
AdGuardHome -s start

# 停止 AdGuardHome 服务
AdGuardHome -s stop

# 重启 AdGuardHome 服务
AdGuardHome -s restart

# 查看 AdGuardHome 服务状态
AdGuardHome -s status

# 卸载 AdGuardHome 服务
AdGuardHome -s uninstall
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;docker 的版本&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;docker pull adguard/adguardhome
# -v 参数后面指定的宿主机上的目录主要用作永久保存 AdGuard Home 的数据文件和配置文件，可自行根据实际情况修改。
# 这里默认配置目录在 /home/adguard
docker run --name adg --restart=always -v /home/adguard/workdir:/opt/adguardhome/work -v /home/adguard/confdir:/opt/adguardhome/conf -p 53:53/tcp -p 53:53/udp -p 67:67/udp -p 68:68/tcp -p 68:68/udp -p 80:80/tcp -p 443:443/tcp -p 853:853/tcp -p 3000:3000/tcp -d adguard/adguardhome
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;# 启动 AdGuard Home 容器
docker start adg
# 停止 AdGuard Home 容器
docker stop adg
# 删除 AdGuard Home 容器
docker rm adg 
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;#!/usr/bin/env bash
# 定时更新脚本
echo &quot;Info:AdGuard Home 开始&quot;
docker stop adg
docker rm adg
docker pull adguard/adguardhome
docker image prune -f
clear
docker run --name adg --restart=always -v /home/adguard/workdir:/opt/adguardhome/work -v /home/adguard/confdir:/opt/adguardhome/conf -p 53:53/tcp -p 53:53/udp -p 67:67/udp -p 68:68/tcp -p 68:68/udp -p 80:80/tcp -p 443:443/tcp -p 853:853/tcp -p 3000:3000/tcp -d adguard/adguardhome
echo &quot;Info:AdGuard Home 完成&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;策略 本人使用的策略有 2个。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#https://github.com/privacy-protection-tools/anti-AD
anti-AD
https://gitee.com/privacy-protection-tools/anti-ad/raw/master/easylist.txt
#https://github.com/neofelhz/neohosts
neoHosts
https://cdn.jsdelivr.net/gh/neoFelhz/neohosts@gh-pages/basic/hosts.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;目前好用的广告过滤规则还是有很多的，它们都针对不同的用途。下面推荐一些比较常用的： &lt;a href=&quot;https://github.com/privacy-protection-tools/anti-AD&quot;&gt;anti-AD v4&lt;/a&gt; 链接：&lt;a href=&quot;https://gitee.com/privacy-protection-tools/anti-ad/raw/master/easylist.txt&quot;&gt;https://gitee.com/privacy-protection-tools/anti-ad/raw/master/easylist.txt&lt;/a&gt; &lt;a href=&quot;https://github.com/neoFelhz/neohosts&quot;&gt;neohosts&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;链接：&lt;a href=&quot;https://cdn.jsdelivr.net/gh/neoFelhz/neohosts@gh-pages/basic/hosts.txt&quot;&gt;https://cdn.jsdelivr.net/gh/neoFelhz/neohosts@gh-pages/basic/hosts.txt&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/cjx82630/cjxlist&quot;&gt;EasyList China&lt;/a&gt; : 国内网站广告过滤的主规则。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;链接：&lt;a href=&quot;https://easylist-downloads.adblockplus.org/easylistchina.txt&quot;&gt;https://easylist-downloads.adblockplus.org/easylistchina.txt&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;EasyList Lite&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;链接： &lt;a href=&quot;https://raw.githubusercontent.com/cjx82630/cjxlist/master/cjxlist.txt&quot;&gt;https://raw.githubusercontent.com/cjx82630/cjxlist/master/cjxlist.txt&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;EasyPrivacy : EasyPrivacy 是隐私保护，不被跟踪。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;链接：&lt;a href=&quot;https://easylist-downloads.adblockplus.org/easyprivacy.txt&quot;&gt;https://easylist-downloads.adblockplus.org/easyprivacy.txt&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;CJX&apos;s Annoyance List : 过滤烦人的自我推广，并补充 EasyPrivacy 隐私规则。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;链接：&lt;a href=&quot;https://raw.githubusercontent.com/cjx82630/cjxlist/master/cjx-annoyance.txt&quot;&gt;https://raw.githubusercontent.com/cjx82630/cjxlist/master/cjx-annoyance.txt&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I don&apos;t care about cookies : 我不关心 Cookie 的问题，屏蔽网站的 cookies 相关的警告。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;链接：&lt;a href=&quot;https://www.i-dont-care-about-cookies.eu/abp/&quot;&gt;https://www.i-dont-care-about-cookies.eu/abp/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;配置文件&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 二进制
/usr/local/bin/AdGuardHome.yaml
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>常用SSH命令</title><link>https://fuwari.vercel.app/posts/one-ssh/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/one-ssh/</guid><description>个人常用宏脚本    info   脚本测试 curl -Lso- https://raw.githubusercontent.com/oooldking/script/master/superben</description><pubDate>Fri, 08 Nov 2019 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;个人常用宏脚本&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;# info

# 脚本测试
curl -Lso- https://raw.githubusercontent.com/oooldking/script/master/superbench.sh  bash
# 看开放的端口
netstat -lntup
# 看有连接的端口
netstat -ant
# 看进程
ps aux
htop
# 搜索文件 位置 and 条件
find / -name *.sh
# 搜索目录内的指定文本内容 grep -irn &quot;条件&quot; 位置
grep -irn &quot;rsa&quot; /root/.ssh
grep -irn PasswordAuthentication /etc/ssh/sshd_config
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;# DNS

# 国外
cat &amp;gt; /etc/resolv.conf&amp;lt;&amp;lt;-EOF
nameserver 8.8.8.8
nameserver 1.1.1.1
options timeout:1 rotate
EOF

# 国内
cat &amp;gt; /etc/resolv.conf&amp;lt;&amp;lt;-EOF
nameserver 223.5.5.5
nameserver 114.114.114.114
options timeout:1 rotate
EOF

# 查看本机外网IP
curl myip.ipip.net
# 查看指定端口占用
netstat -tunlp grep 22
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;# Centos7 
yum -y install net-tools git wget
# 升级软件
yum --exclude=kernel* update
# 升级软件+内核
yum -y update
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;# SSH

# 开启密码登录
sed -i &apos;s/^.*PasswordAuthentication.*/PasswordAuthentication yes/g&apos; /etc/ssh/sshd_config;
# 禁用密码登录
if [ -z &quot;grep ^PasswordAuthentication /etc/ssh/sshd_config&quot; ]; then
sed -i &quot;s@^#PasswordAuthentication.*@&amp;amp;\nPasswordAuthentication no@&quot; /etc/ssh/sshd_config
else
sed -i &quot;s@^PasswordAuthentication.*@PasswordAuthentication no@&quot; /etc/ssh/sshd_config
fi
# 重启sshd服务
service sshd restart;
/etc/init.d/ssh restart;
# 查看当前ssh端口
grep ^Port /etc/ssh/sshd_config  awk &apos;{print $2}&apos;
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;# 场景列表
screen -list
# 安装场景
yum -y install screen
# 恢复场景
screen -r asf
# 创建场景
screen -S asf
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;# bitwarden
docker pull bitwardenrs/server:latest
docker kill bitwarden
docker rm bitwarden
docker run -d --name bitwarden -v /home/bwdata/:/data/ -p 3000:80 bitwardenrs/server:latest
#docker logs --tail 30 -f bitwarden
docker logs bitwarden
# -----------
docker image ls
docker image rm 多余的镜像
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;# Linux-NetSpeed
bash &amp;lt;(curl -fsL mcnb.top/tcp.sh)

# debian 8+ 开启bbr
echo &quot;net.core.default_qdisc=fq&quot; &amp;gt;&amp;gt; /etc/sysctl.conf
echo &quot;net.ipv4.tcp_congestion_control=bbr&quot; &amp;gt;&amp;gt; /etc/sysctl.conf
sysctl -p

# 观察BBR是否开启成功，执行以下代码：
sysctl net.ipv4.tcp_available_congestion_control &amp;amp;&amp;amp; sysctl net.ipv4.tcp_congestion_control &amp;amp;&amp;amp; lsmod  grep bbr

# 反馈结果都有bbr, 则证明你的内核已开启bbr
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>Debian8+ 无人职守自动更新</title><link>https://fuwari.vercel.app/posts/unattended-upgrades/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/unattended-upgrades/</guid><description>自动更新软件包，避免因为漏洞被骇等等   安装 unattended-upgrades   apt install unattended-upgrades    配置 自动更新策略  如果需要调整更新</description><pubDate>Fri, 25 Oct 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;自动更新软件包，避免因为漏洞被骇等等&lt;/p&gt;
&lt;h2&gt;安装 unattended-upgrades&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;apt install unattended-upgrades
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;配置 自动更新策略&lt;/h3&gt;
&lt;p&gt;如果需要调整更新策略，例如添加或排除软件包更新。在&lt;code&gt;/etc/apt/apt.conf.d/50unattended-upgrades&lt;/code&gt;文件内设置，里面有详细配置说明。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Unattended-Upgrade::Origins-Pattern&lt;/code&gt;选项控制自动更新软件包类型，默认只升级系统安全类更新，适合大部分情况下使用。&lt;/p&gt;
&lt;h3&gt;配置文件激活服务&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;# 个人参数
cat &amp;gt; /etc/apt/apt.conf.d/20auto-upgrades &amp;lt;&amp;lt; EOF
// 每天刷新软件包列表
APT::Periodic::Update-Package-Lists &quot;1&quot;;
// 每天运行升级软件包
APT::Periodic::Unattended-Upgrade &quot;1&quot;;
// 每2天清除包缓存文件
APT::Periodic::AutocleanInterval &quot;2&quot;;
EOF

#健康参数
cat &amp;gt; /etc/apt/apt.conf.d/20auto-upgrades &amp;lt;&amp;lt; EOF
// 每天刷新软件包列表
APT::Periodic::Update-Package-Lists &quot;1&quot;;
// 每天下载可用更新文件
APT::Periodic::Download-Upgradeable-Packages &quot;1&quot;;
// 每7天运行升级软件包
APT::Periodic::Unattended-Upgrade &quot;7&quot;;
// 每21天清除包缓存文件
APT::Periodic::AutocleanInterval &quot;21&quot;;
EOF
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;更多功能参数请查看&lt;code&gt;/etc/cron.daily/apt&lt;/code&gt;文件描述。&lt;/p&gt;
&lt;h3&gt;测试自动更新服务&lt;/h3&gt;
&lt;p&gt;完成上面设置后，运行更新命令测试更新服务是否正常。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;unattended-upgrade -v -d
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;无人值守自动更新服务就设置完成了，以后不用再惦记检查更新这档事啦。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.vpsdp.net/unattended-upgrades/&quot;&gt;扩展阅读 1&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>CentOS7+ 无人职守自动更新</title><link>https://fuwari.vercel.app/posts/yum-cron/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/yum-cron/</guid><description>自动更新软件包，避免因为漏洞被骇等等   安装 yum-cron   yum -y install yum-cron    配置 yum-cron 自动更新  有两个配置文件：/etc/yum/yum</description><pubDate>Fri, 25 Oct 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;自动更新软件包，避免因为漏洞被骇等等&lt;/p&gt;
&lt;h2&gt;安装 yum-cron&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;yum -y install yum-cron
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;配置 yum-cron 自动更新&lt;/h3&gt;
&lt;p&gt;有两个配置文件：/etc/yum/yum-cron.conf 和 /etc/yum/yum-cron-hourly.conf。这两个配置文件内容差不多，用于配置每天需要执行的内容和每小时需要执行的内容。&lt;/p&gt;
&lt;p&gt;在配置文件中，提供的更新策略为：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#  What kind of update to use:
# default                            = yum upgrade
# security                           = yum --security upgrade
# security-severity:Critical         = yum --sec-severity=Critical upgrade
# minimal                            = yum --bugfix update-minimal
# minimal-security                   = yum --security update-minimal
# minimal-security-severity:Critical =  --sec-severity=Critical update-minimal
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;default 默认的更新，类似 yum update&lt;br /&gt;
security 安全更新， 类似 yum --secruity upgrade&lt;br /&gt;
security-severity:Critical 重要的安全更新，类似 yum --sec-severity=Critical upgrade&lt;br /&gt;
minimal 最小化更新，类似 yum --bugfix update-minimal&lt;br /&gt;
minimal-security 最小化安全更新，类似 yum --security update-minimal&lt;br /&gt;
minimal-security-severity:Critical 最小化重要安全更新，类似 yum --sec-severity=Critical update-minimal&lt;/p&gt;
&lt;p&gt;通过 update-cmd 指定相应的更新策略。&lt;br /&gt;
如： 需要配置只需要更新重要的安全更新，则配置为&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;update_cmd = security-severity:Critical

# 快捷替换命令则为
sed -i &apos;supdate_cmd = defaultupdate_cmd = security-severity:Criticalg&apos; /etc/yum/yum-cron.conf
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;apply_updates 设置是否提交相应的安全更新，如果设置为 no,则只会检测存在更新，但不会直接更新，如要自动更新，需将 apply_updates 设置为 yes&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 将 apply_updates 参数改为 yes
grep ^apply_updates /etc/yum/yum-cron.conf
sed -i &apos;sapply_updates = noapply_updates = yesg&apos; /etc/yum/yum-cron.conf
grep ^apply_updates /etc/yum/yum-cron.conf
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;不想更新内核的话，添加以下内容：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;if [ -z &quot;grep ^exclude /etc/yum/yum-cron.conf&quot; ]; then
    cat &amp;gt;&amp;gt; /etc/yum/yum-cron.conf &amp;lt;&amp;lt; EOF
exclude=kernel*
EOF
    else
    sed -i &quot;s@^exclude.*@exclude=kernel*@&quot; /etc/yum/yum-cron.conf
fi
echo &apos;Info: 禁止自动更新内核设置完毕!&apos;

# 允许更新内核设置
sed -i &quot;s@^exclude.*@@&quot; /etc/yum/yum-cron.conf
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;启动服务&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;systemctl enable yum-cron.service &amp;amp;&amp;amp; systemctl start yum-cron.service &amp;amp;&amp;amp; systemctl status yum-cron.service
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;无人值守自动更新服务就设置完成了，以后不用再惦记检查更新这档事啦。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.linuxprobe.com/yum-cron-linux.html&quot;&gt;扩展阅读 1&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>使用haprxoy隐藏SMTP发信服务器源IP</title><link>https://fuwari.vercel.app/posts/haprxoy-smtp/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/haprxoy-smtp/</guid><description>隐藏用 smtp 发信 IP 防止泄漏源站 IP 导致被攻击。.⊙o⊙嗯   haproxy 隐藏 IP 教程   代理服务器操作   安装 haproxy    Centos 7 yum -y in</description><pubDate>Wed, 16 Oct 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;隐藏用 smtp 发信 IP 防止泄漏源站 IP 导致被攻击。.(⊙o⊙)嗯&lt;/p&gt;
&lt;h2&gt;haproxy 隐藏 IP 教程&lt;/h2&gt;
&lt;h3&gt;代理服务器操作&lt;/h3&gt;
&lt;h3&gt;安装 haproxy&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;# Centos 7
yum -y install haproxy
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;写入配置文件&lt;/h3&gt;
&lt;p&gt;代码复制到临时文本，修改 IP 后，全部复制，然后粘贴到 ssh 上 回车执行。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cat &amp;gt; /etc/haproxy/haproxy.cfg&amp;lt;&amp;lt;-EOF
global
#   ulimit -n   51200
defaults
    log global
    mode    tcp
    option  dontlognull
    timeout connect 1000ms
    timeout client 150000ms
    timeout server 150000ms
frontend ssin
    bind *:465
#如果是普通模式，那这里就填25，如果是SSL模式，就需要填465
default_backend ssout
backend ssout
    server server1 smtpdm.aliyun.com maxconn 204800
    server server2 smtpdm.aliyun.com maxconn 204800
#这里的smtpdm.aliyun.com需要改成你的SMTP给的地址，根据你自己的实际情况修改
EOF
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;# 查看一下配置文件内容
cat  /etc/haproxy/haproxy.cfg
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;修改完成后，执行重启命令，并设为开机启动&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;service haproxy restart
chkconfig haproxy on
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;发信源站机器操作&lt;/h3&gt;
&lt;h3&gt;修改服务器上的 hosts 文件&lt;/h3&gt;
&lt;p&gt;把 smtp 地址写进/etc/hosts 文件，指向中转服务器的 IP&lt;/p&gt;
&lt;p&gt;假如我使用的是阿里云的国内邮件推送，那么它的 SMTP 服务器域名就是：smtpdm.aliyun.com&lt;/p&gt;
&lt;p&gt;假如我使用的是阿里云的国外邮件推送，那么它的 SMTP 服务器域名就是：smtpdm-ap-southeast-1.aliyun.com&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;vim /etc/hosts
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;下面为参考，请根据自己机器内容改写&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;127.0.0.1 localhost
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
22.33.44.55  smtpdm.aliyun.com
#22.33.44.55 就是代理服务器的IP
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;修改完成后，执行 service network restart 重启网卡即可&lt;/p&gt;
</content:encoded></item><item><title>Windows Terminal Preview</title><link>https://fuwari.vercel.app/posts/terminal/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/terminal/</guid><description>Windows Terminal 是一个全新的、流行的、功能强大的命令行终端工具。包含很多来社区呼声很高的特性，例如：多 Tab 支持、富文本、多语言支持、可配置、主题和样式，支持 emoji 和基于</description><pubDate>Mon, 07 Oct 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Windows Terminal 是一个全新的、流行的、功能强大的命令行终端工具。包含很多来社区呼声很高的特性，例如：多 Tab 支持、富文本、多语言支持、可配置、主题和样式，支持 emoji 和基于 GPU 运算的文本渲染等等。 同时该终端依然符合我们的目标和要求，以确保它保持快速、高效，并且不会消耗大量内存和电量。&lt;/p&gt;
&lt;h2&gt;学习记录&lt;/h2&gt;
&lt;h3&gt;&lt;strong&gt;设置背景图片&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;打开运行或者按下 CTRL+R 输入下面路径回车&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;%LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\RoamingState
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;将要设置为背景的图片放入此目录&lt;/p&gt;
&lt;p&gt;打开 Terminal 的设置，在弹出的配置文件里搜索 acrylicOpacity&lt;/p&gt;
&lt;p&gt;将会出现 3个 acrylicOpacity ,分别在下面添加同一段代码(图片名字改成你自己的)&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&quot;backgroundImage&quot; : &quot;ms-appdata:///roaming/wallhaven-001.jpg&quot;,
&quot;backgroundImageOpacity&quot; : 0.75,
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;同时修改 useAcrylic 为 true 或者 false 设置不同，图片亮度不同。可根据自己需要设置开或关&lt;/p&gt;
&lt;p&gt;本人修改的范例如下&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{
            &quot;acrylicOpacity&quot; : 0.5,
            &quot;backgroundImage&quot; : &quot;ms-appdata:///roaming/wallhaven-001.jpg&quot;,
            &quot;backgroundImageOpacity&quot; : 0.75,
            &quot;background&quot; : &quot;#012456&quot;,
            &quot;closeOnExit&quot; : true,
            &quot;colorScheme&quot; : &quot;Campbell&quot;,
            &quot;commandline&quot; : &quot;powershell.exe&quot;,
            &quot;cursorColor&quot; : &quot;#FFFFFF&quot;,
            &quot;cursorShape&quot; : &quot;bar&quot;,
            &quot;fontFace&quot; : &quot;Consolas&quot;,
            &quot;fontSize&quot; : 10,
            &quot;guid&quot; : &quot;{61c54bbd-c2c6-5271-96e7-009a87ff44bf}&quot;,
            &quot;historySize&quot; : 9001,
            &quot;icon&quot; : &quot;ms-appx:///ProfileIcons/{61c54bbd-c2c6-5271-96e7-009a87ff44bf}.png&quot;,
            &quot;name&quot; : &quot;Windows PowerShell&quot;,
            &quot;padding&quot; : &quot;0, 0, 0, 0&quot;,
            &quot;snapOnInput&quot; : true,
            &quot;startingDirectory&quot; : &quot;%USERPROFILE%&quot;,
            &quot;useAcrylic&quot; : false
        },
        {
            &quot;acrylicOpacity&quot; : 0.75,
            &quot;backgroundImage&quot; : &quot;ms-appdata:///roaming/wallhaven-002.jpg&quot;,
            &quot;backgroundImageOpacity&quot; : 0.75,
            &quot;closeOnExit&quot; : true,
            &quot;colorScheme&quot; : &quot;Campbell&quot;,
            &quot;commandline&quot; : &quot;cmd.exe&quot;,
            &quot;cursorColor&quot; : &quot;#FFFFFF&quot;,
            &quot;cursorShape&quot; : &quot;bar&quot;,
            &quot;fontFace&quot; : &quot;Consolas&quot;,
            &quot;fontSize&quot; : 10,
            &quot;guid&quot; : &quot;{0caa0dad-35be-5f56-a8ff-afceeeaa6101}&quot;,
            &quot;historySize&quot; : 9001,
            &quot;icon&quot; : &quot;ms-appx:///ProfileIcons/{0caa0dad-35be-5f56-a8ff-afceeeaa6101}.png&quot;,
            &quot;name&quot; : &quot;cmd&quot;,
            &quot;padding&quot; : &quot;0, 0, 0, 0&quot;,
            &quot;snapOnInput&quot; : true,
            &quot;startingDirectory&quot; : &quot;%USERPROFILE%&quot;,
            &quot;useAcrylic&quot; : true
        },
        {
            &quot;acrylicOpacity&quot; : 0.59999999999999998,
            &quot;backgroundImage&quot; : &quot;ms-appdata:///roaming/wallhaven-003.jpg&quot;,
            &quot;backgroundImageOpacity&quot; : 0.75,
            &quot;closeOnExit&quot; : false,
            &quot;colorScheme&quot; : &quot;Vintage&quot;,
            &quot;commandline&quot; : &quot;Azure&quot;,
            &quot;connectionType&quot; : &quot;{d9fcfdfa-a479-412c-83b7-c5640e61cd62}&quot;,
            &quot;cursorColor&quot; : &quot;#FFFFFF&quot;,
            &quot;cursorShape&quot; : &quot;bar&quot;,
            &quot;fontFace&quot; : &quot;Consolas&quot;,
            &quot;fontSize&quot; : 10,
            &quot;guid&quot; : &quot;{b453ae62-4e3d-5e58-b989-0a998ec441b8}&quot;,
            &quot;historySize&quot; : 9001,
            &quot;icon&quot; : &quot;ms-appx:///ProfileIcons/{b453ae62-4e3d-5e58-b989-0a998ec441b8}.png&quot;,
            &quot;name&quot; : &quot;Azure Cloud Shell&quot;,
            &quot;padding&quot; : &quot;0, 0, 0, 0&quot;,
            &quot;snapOnInput&quot; : true,
            &quot;startingDirectory&quot; : &quot;%USERPROFILE%&quot;,
            &quot;useAcrylic&quot; : true
        }
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>nslookup</title><link>https://fuwari.vercel.app/posts/nslookup/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/nslookup/</guid><description>语法为 nslookup -qt=类型 目标域名 指定的 DNS 服务器 IP 或域名   例子：nslookup -qt=A www.wxlost.com 223.5.5.5  NSLookup 可</description><pubDate>Thu, 12 Sep 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;语法为 nslookup -qt=类型 目标域名 指定的 DNS 服务器 IP 或域名&lt;br /&gt;
例子：nslookup -qt=A www.wxlost.com 223.5.5.5&lt;/p&gt;
&lt;p&gt;NSLookup 可以指定查询的类型，可以查到 DNS 记录的生存时间还可以指定使用那个 DNS 服务器进行解释。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;如何用本地计算机查询 DNS 记录？&lt;/strong&gt;&lt;br /&gt;
打开命令提示符窗口(开始--运行---输入 CMD--回车)&lt;br /&gt;
nslookup 的语法为 nslookup –qt=类型 目标域名(注意 qt 必须小写)&lt;br /&gt;
类型主要有：&lt;br /&gt;
A 地址记录(Ipv4) &lt;br /&gt;
AAAA 地址记录（Ipv6）&lt;br /&gt;
CNAME 别名记录&lt;br /&gt;
HINFO 硬件配置记录，包括 CPU、操作系统信息&lt;br /&gt;
ISDN 域名对应的 ISDN 号码 &lt;br /&gt;
MB 存放指定邮箱的服务器&lt;br /&gt;
MG 邮件组记录&lt;br /&gt;
MINFO 邮件组和邮箱的信息记录&lt;br /&gt;
MR 改名的邮箱记录&lt;br /&gt;
MX 邮件服务器记录&lt;br /&gt;
NS 名字服务器记录&lt;br /&gt;
PTR 反向记录&lt;br /&gt;
RP 负责人记录&lt;br /&gt;
SRV TCP 服务器信息记录&lt;br /&gt;
TXT 域名对应的文本信息&lt;/p&gt;
&lt;p&gt;比如你要查询 www.qq.com 的 A 记录，那在命令符提示窗口输入：nslookup -qt=a www.qq.com 则可以查到相应的记录&lt;/p&gt;
</content:encoded></item><item><title>Esxi 6.7 个人心得</title><link>https://fuwari.vercel.app/posts/esxi/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/esxi/</guid><description>ESXI 官网  https://www.vmware.com/cn/products/esxi-and-esx.htmlhttps://www.vmware.com/cn/products/esxi</description><pubDate>Thu, 20 Jun 2019 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;ESXI 官网&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://www.vmware.com/cn/products/esxi-and-esx.html&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://www.vmware.com/cn/products/esxi-and-esx.html&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://www.vmware.com/cn/products/esxi-and-esx.html&quot;&gt;https://www.vmware.com/cn/products/esxi-and-esx.html&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;下载链接&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://my.vmware.com/cn/group/vmware/downloads/info/slug/datacenter_cloud_infrastructure/vmware_vsphere/7_0#product_downloads&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://my.vmware.com/cn/group/vmware/downloads/info/slug/datacenter_cloud_infrastructure/vmware_vsphere/7_0#product_downloads&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://my.vmware.com/cn/group/vmware/downloads/info/slug/datacenter_cloud_infrastructure/vmware_vsphere/7_0#product_downloads&quot;&gt;https://my.vmware.com/cn/group/vmware/downloads/info/slug/datacenter_cloud_infrastructure/vmware_vsphere/7_0#product_downloads&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;VMware-ESXi 许可证申请&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://my.vmware.com/cn/group/vmware/evalcenter?p=free-esxi6&quot;&gt;6点我点我&lt;/a&gt; &lt;a href=&quot;https://my.vmware.com/cn/group/vmware/evalcenter?p=free-esxi7&quot;&gt;7点我点我&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;更换证书&lt;/p&gt;
&lt;p&gt;首先备份原来的证书，登录 esxi 主机(安全的 ssh)之后进入自己数据盘的目录&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#证书默认保存位置：/etc/vmware/ssl
cd /etc/vmware/ssl
mv rui.crt old_rui.crt.bak
mv rui.key old_rui.key.bak
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后把新的证书改名后放到/etc/vmware/ssl 目录下。重启 Esxi&lt;/p&gt;
&lt;h2&gt;ssh 操作命令&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;# 不对已启用的本地和远程 shell 访问权限显示警告
esxcli system settings advanced set -o /UserVars/SuppressShellWarning -i 1
# 自动禁用本地和远程 shell 访问权限之前的时间 (以秒为单位，0 表示禁用)。在重新启动服务之后生效。
esxcli system settings advanced set -o /UserVars/ESXiShellTimeOut -i 1
# 交互式 shell 自动注销之前的闲置时间 (以秒为单位，0 表示禁用)。仅对新登录的会话生效。
esxcli system settings advanced set -o /UserVars/ESXiShellInteractiveTimeOut -i 3600
# 是否选择加入 Host Client 客户体验改善计划，0 为询问，1 为加入，2 为不加入
esxcli system settings advanced set -o /UserVars/HostClientCEIPOptIn -i 2
# 修改 hostname 的名字 
esxcli system hostname set --host Esxi6.7U2
esxcli system hostname set --domain Server
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;NTP 服务器&lt;/h2&gt;
&lt;p&gt;今天玩 esxi,安装了 windows10.结果时间始终不对。找了半天还是换了同步服务器才行。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ntp1.aliyun.com

ntp2.aliyun.com

ntp3.aliyun.com

ntp4.aliyun.com

ntp5.aliyun.com

ntp6.aliyun.com

ntp7.aliyun.com
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>uTorrent优化版</title><link>https://fuwari.vercel.app/posts/utorrent/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/utorrent/</guid><description>软件介绍：uTorrent 是全球最流行的 BT 客户端，同时也是全球最小巧的 BT 客户端。uTorrent 集其他 BT 客户端的多数功能于一身，所以获得大家的青睐。功能包括：带宽优化、任务安排、</description><pubDate>Sun, 05 May 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;软件介绍：uTorrent 是全球最流行的 BT 客户端，同时也是全球最小巧的 BT 客户端。uTorrent 集其他 BT 客户端的多数功能于一身，所以获得大家的青睐。功能包括：带宽优化、任务安排、RSS 自动下载和主流 DHT（与 BitComet 兼容）。此外，uTorrent 还支持协议加密联合规范（与 Azureus2.4.0.0及其更高版本、BitComet0.63及其更高版本相兼容）和用户交换（此处省略 1万字）。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.52pojie.cn/thread-916056-1-1.html&quot;&gt;本文章转自 52破解&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;说明：软件版本 uTorrent.v2.21，配置我做了下优化，大小仅有 1mb 多，&lt;a href=&quot;https://www.52pojie.cn/forum-2-1.html&quot;&gt;无广告&lt;/a&gt;，&lt;a href=&quot;https://www.52pojie.cn/&quot;&gt;绿色版&lt;/a&gt;，没有乱七八糟的功能，无视版权，敏感资源，只为下载而生。我们有时下载一些资源发现走不动，没速度，这时候你需要 tracker，加上后你会发现你的速度飞起。（感兴趣的自行去百度 tracker 及 P2P 下载原理）。&lt;br /&gt;
另附上 trackerslist 地址：&lt;a href=&quot;https://github.com/ngosang/trackerslist&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://github.com/ngosang/trackerslist&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://github.com/ngosang/trackerslist&quot;&gt;https://github.com/ngosang/trackerslist&lt;/a&gt;         (里面有好几 trackerslist 清单对应不同的协议)&lt;/p&gt;
&lt;p&gt;如果不知道选哪个，就用第二个，all 也就是全部      &lt;br /&gt;
链接：&lt;a href=&quot;https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_all.txt&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_all.txt&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_all.txt&quot;&gt;https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_all.txt&lt;/a&gt;     (建议收藏，会定期更新)&lt;/p&gt;
&lt;p&gt;我用迅雷下载下流浪地球等了半天速度依然是 0，用了 utorrent 配合 trackers 速度将近 5mb/s，另外又测试了一个资源，达到 7mb 多，最高速度达到 8mb 多。&lt;/p&gt;
&lt;p&gt;觉得速度慢的，资源走不动的，请添加 trackers,请添加 trackers,请添加 trackers，重要的事情说 3遍。还有软件支持磁力，也支持种子，别再问了。无视版权，敏感资源照下不误&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;💡&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;uTorrent.v2.21下载&lt;/p&gt;
&lt;p&gt;[download]https://r2.onepve.com/uploads/2024/07/uTorrent.v2.21.zip[/download]&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;✅&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;如何添加 trackers 动态图&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://r2.onepve.com/uploads/2024/07/trackers.gif&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>申请Let通配符证书</title><link>https://fuwari.vercel.app/posts/lets-ssl/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/lets-ssl/</guid><description>Let&apos;s Encrypt 发布的 ACME v2现已正式支持通配符证书，记录一下申请过程   💡 注：本教程是在 centos 7下操作的，其他 Linux 系统大同小异。     一 、 通过 a</description><pubDate>Tue, 30 Apr 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Let&apos;s Encrypt 发布的 ACME v2现已正式支持通配符证书，记录一下申请过程&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;💡 注：本教程是在 centos 7下操作的，其他 Linux 系统大同小异。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;一 、 通过 acme.sh 申请&lt;/h2&gt;
&lt;h3&gt;获取&lt;code&gt;acme.sh&lt;/code&gt;&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;curl https://get.acme.sh  sh
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;✅&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;如下所示即为安装成功&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://r2.onepve.com/uploads/2024/07/20190430145548.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;注：我在 centos 7上遇到问题，安装完后执行&lt;code&gt;acme.sh&lt;/code&gt;，提示命令没找到，如果遇到跟我一样的问题，请关掉终端然后再登录，或者执行以下指令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;source ~/.bashrc
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;开始获取证书&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;acme.sh&lt;/code&gt;强大之处在于，可以自动配置 DNS，不用去域名后台操作解析记录了 下面给出阿里云和 cloudflare 解析的例子，其他地方注册的请参考这里自行修改：&lt;a href=&quot;https://github.com/Neilpang/acme.sh/wiki/How-to-issue-a-cert&quot;&gt;传送门&lt;/a&gt; 请先前往阿里云后台获取&lt;code&gt;App_Key&lt;/code&gt;跟&lt;code&gt;App_Secret&lt;/code&gt; &lt;a href=&quot;https://ak-console.aliyun.com/#/accesskey&quot;&gt;传送门&lt;/a&gt;，然后执行以下脚本&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 替换成从阿里云后台获取的密钥
export Ali_Key=&quot;ggggggggggggg&quot;
export Ali_Secret=&quot;qqqqqqqqqqqqqqqq&quot;
# 换成自己的域名
acme.sh --issue --dns dns_ali -d onepve.com -d *.onepve.com
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;前往 &lt;a href=&quot;https://www.cloudflare.com/a/login&quot;&gt;https://www.cloudflare.com&lt;/a&gt; 登录后，右上角选择 &lt;code&gt;My profile&lt;/code&gt;,最下面的&lt;code&gt;Global API Key&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 替换成从cloudflare后台获取的密钥和cloudflare邮箱账号
export CF_Key=&quot;cccccccccccffffffffff&quot;
export CF_Email=&quot;xxxxx@gmail.com&quot;
# 换成自己的域名
acme.sh --issue --dns dns_cf -d 68.ci -d *.68.ci
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这里是通过线程休眠 120秒等待 DNS 生效的方式，所以至少需要等待两分钟&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://r2.onepve.com/uploads/2024/07/20190430151152.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;✅ 到了这一步，下面会继续显示证书所在的位置和名字~到此申请过程就完成了。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;提示：生成的证书放在此目录下： &lt;code&gt;~/acme.sh/domain/&lt;/code&gt;&lt;br /&gt;
第一次成功之后，&lt;code&gt;acme.sh&lt;/code&gt;会记录下之前的参数，并且生成一个定时任务，每天凌晨 0：00自动检测过期域名并且自动续期。对这种方式有顾虑的，请慎重，不过也可以自行删掉用户级的定时任务，并且清理掉~/.acme.sh 文件夹就行&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 查看定时任务列表
crontab -l
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Nginx&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    ssl_certificate /path/.acme.sh/domain/fullchain.cer;
    ssl_certificate_key /path/.acme.sh/domain/domain.key;
    ssl_trusted_certificate  /path/.acme.sh/domain/ca.cer;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;二 、 docker 镜像获取&lt;/h2&gt;
&lt;p&gt;如果装有 docker 环境的话，也可以用 docker 镜像来获取证书，只需一行命令即可&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;docker run --rm  -it  \
  -v &quot;$(pwd)/out&quot;:/acme.sh  \
  -e Ali_Key=&quot;xxxxxx&quot; \
  -e Ali_Secret=&quot;xxxx&quot; \
  neilpang/acme.sh  --issue --dns dns_ali -d domain.cn -d *.domain.cn
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;成功之后，证书会保存在当前目录下的 out 文件夹，也可以指定路径，修改上面第一行 &lt;code&gt;&quot;$(pwd)/out&quot;&lt;/code&gt;，改为你想要保存的路径即可。 详细用法，可以参考：&lt;a href=&quot;https://github.com/Neilpang/acme.sh/wiki/Run-acme.sh-in-docker&quot;&gt;传送门&lt;/a&gt; 获取下来的证书跟方式一 获取的一模一样，其他信息请参考方式一。&lt;/p&gt;
</content:encoded></item><item><title>AnyDesk</title><link>https://fuwari.vercel.app/posts/anydesk-id/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/anydesk-id/</guid><description>相对好用。还是买不起授权，远程办公还行。远程游戏还是没有 TeamViewer 来得快，不过 TeamViewer 被国内代理后就……   AnyDesk ID 和别名  安装设置完成后，一定要备份下</description><pubDate>Thu, 25 Apr 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;相对好用。还是买不起授权，远程办公还行。远程游戏还是没有 TeamViewer 来得快，不过 TeamViewer 被国内代理后就……&lt;/p&gt;
&lt;h3&gt;AnyDesk ID 和别名&lt;/h3&gt;
&lt;p&gt;安装设置完成后，一定要备份下别名文件。防止系统翻车好别名就 GG 了&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Windows 7 and newer    
Portable:   %appdata%\AnyDesk
Installed:  %programdata%\AnyDesk

Windows XP/Server 2003  
Portable:   %appdata%\AnyDesk
Installed:  %AllUsersProfile%\AnyDesk

macOS   
local user: ~/.anydesk/service.conf
service (default):  /etc/anydesk/service.conf

Linux   
local user: ~/.anydesk/service.conf
service (default):  /etc/anydesk/service.conf
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;**注意：**要备份设置和最近的连接，您需要在 Windows 上备份整个目录 %appdata%\AnyDesk&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;⚠️警告：如果配置文件以任何方式丢失，ID 将丢失。删除配置文件也会删除别名。如果未手动备份配置文件，则无法找回之前的别名。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;卸载不会触及或删除您的 ID 和配置文件，除非在卸载菜单中明确请求。 这里放入 bat 备份，未完待续。..&lt;/p&gt;
</content:encoded></item><item><title>时间类常用脚本</title><link>https://fuwari.vercel.app/posts/time/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/time/</guid><description>NTP 服务器   ntp1.aliyun.com  ntp2.aliyun.com  ntp3.aliyun.com  ntp4.aliyun.com  ntp5.aliyun.com  ntp6.</description><pubDate>Mon, 22 Apr 2019 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;NTP 服务器&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;ntp1.aliyun.com

ntp2.aliyun.com

ntp3.aliyun.com

ntp4.aliyun.com

ntp5.aliyun.com

ntp6.aliyun.com

ntp7.aliyun.com
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;&lt;strong&gt;Windows 3种时间同步方法 [含批处理脚本]&lt;/strong&gt;&lt;/h2&gt;
&lt;h3&gt;1：Windows 时间同步 分秒校对批处理脚本&lt;/h3&gt;
&lt;p&gt;将此脚本另存为 .bat 格式脚本，点击执行即可，相关参数在脚本里修改，已注释功能介绍。&lt;br /&gt;
windows 时间功能其实是支持好几种同步时间类型的，本脚本默认使用 ntp 模式，相信各位在 linux 下都用过 ntp 同步吧。&lt;br /&gt;
ntp 同步，相比 windows 默认同步，更好。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;@echo off
&amp;gt;nul 2&amp;gt;&amp;amp;1 &quot;%SYSTEMROOT%\system32\cacls.exe&quot; &quot;%SYSTEMROOT%\system32\config\system&quot;
if &apos;%errorlevel%&apos; NEQ &apos;0&apos; (
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^(&quot;Shell.Application&quot;^) &amp;gt; &quot;%temp%\getadmin.vbs&quot;
echo UAC.ShellExecute &quot;%~s0&quot;, &quot;&quot;, &quot;&quot;, &quot;runas&quot;, 1 &amp;gt;&amp;gt; &quot;%temp%\getadmin.vbs&quot;
&quot;%temp%\getadmin.vbs&quot;
exit /B
:gotAdmin
if exist &quot;%temp%\getadmin.vbs&quot; ( del &quot;%temp%\getadmin.vbs&quot; )
title www.nat.ee - 时间同步
set Enabled=1
rem 启动&apos;1&apos; 关闭&apos;0&apos;

set Type=NTP
rem 类型: NoSync NTP NT5DS AllSync

set NtpServer=cn.pool.ntp.org
rem NtpServer: NTP 时间源的域名系统(DNS)名称或 IP 地址。此值的格式是“dns 名称,标志”，其中标志是该主机标志的十六进制位掩码。有关详细信息，请参阅“Windows 时间服务组策略设置”中的“与 Windows Time 关联的 NTP 客户端组策略设置”部分(http://go.microsoft.com/fwlink/?LinkId=139727)。默认值是“time.windows.com,0x09”。

set CrossSiteSyncFlags=2
rem CrossSiteSyncFlags: 此值用位掩码表示，控制 W32time 如何选择其自身站点之外的时间源。可能的值为 0、1 和 2。此值设置为 0(不)时指示时间客户端不应尝试与自身站点之外的时间同步。此值设置为 1(仅 PDC)时指示，当客户端必须与自身站点之外的伙伴同步时间时，只能使用作为其他域中主域控制器(PDC)仿真器操作主机的计算机作为同步伙伴。此值设置为 2(所有)时指示可以使用任何同步伙伴。如果未设置 NT5DS 值，此值将被忽略。默认值为十进制值 2(十六进制值 0x02)。

set ResolvePeerBackoffMinutes=1
rem ResolvePeerBackoffMinutes: 此值(分钟)控制上一次尝试失败时 W32time 再次尝试解析 DNS 名称之前等待的时间。默认值为 15 分钟。

set ResolvePeerBackoffMaxTimes=10
rem ResolvePeerBackoffMaxTimes: 此值控制在重新启动发现进程之前 W32time 尝试解析 DNS 名称的次数。DNS 名称解析每失败一次，下一次尝试之前等待的时间将是前一次等待时间的两倍。默认值为尝试 7 次。

set SpecialPollInterval=60
rem SpecialPollInterval: 此 NTP 客户端值(秒)控制当时间源配置为使用特殊轮询间隔时，轮询手动配置时间源的频率。如果在 NTPServer 设置上启用了 SpecialInterval 标志，则客户端将使用设置为 SpecialPollInterval 的值(而不是 MinPollInterval 和 MaxPollInterval 值)来确定轮询时间源的频率。默认值为 3600 秒(1 小时)。

set EventLogFlags=0
rem EventLogFlags: 此值是一个位掩码，控制可以记录到事件查看器系统日志中的事件。若此值设置为 0x1，则指示每次检测到时间跳跃时 W32time 都将创建一个事件。若此值设置为 0x2，则指示每次更改时间源时 W32time 都将创建一个事件。此值是一个位掩码值，因此将其设置为 0x3(0x1 与 0x2 的和)时指示同时记录时间跳跃和时间源更改。

set W32Time=HKLM\SYSTEM\CurrentControlSet\services\W32Time
Reg add &quot;%W32Time%\Parameters&quot; /v &quot;NtpServer&quot; /t REG_SZ /d &quot;%NtpServer%&quot; /f  &amp;gt; nul
Reg add &quot;%W32Time%\Parameters&quot; /v &quot;Type&quot; /t REG_SZ /d &quot;%Type%&quot; /f  &amp;gt; nul
Reg add &quot;%W32Time%\TimeProviders\NtpClient&quot; /v &quot;Enabled&quot; /t REG_DWORD /d &quot;%Enabled%&quot; /f  &amp;gt; nul
Reg add &quot;%W32Time%\TimeProviders\NtpClient&quot; /v &quot;CrossSiteSyncFlags&quot; /t REG_DWORD /d &quot;%CrossSiteSyncFlags%&quot; /f  &amp;gt; nul
Reg add &quot;%W32Time%\TimeProviders\NtpClient&quot; /v &quot;ResolvePeerBackoffMinutes&quot; /t REG_DWORD /d &quot;%ResolvePeerBackoffMinutes%&quot; /f  &amp;gt; nul
Reg add &quot;%W32Time%\TimeProviders\NtpClient&quot; /v &quot;ResolvePeerBackoffMaxTimes&quot; /t REG_DWORD /d &quot;%ResolvePeerBackoffMaxTimes%&quot; /f  &amp;gt; nul
Reg add &quot;%W32Time%\TimeProviders\NtpClient&quot; /v &quot;SpecialPollInterval&quot; /t REG_DWORD /d &quot;%SpecialPollInterval%&quot; /f  &amp;gt; nul
Reg add &quot;%W32Time%\TimeProviders\NtpClient&quot; /v &quot;EventLogFlags&quot; /t REG_DWORD /d &quot;%EventLogFlags%&quot; /f  &amp;gt; nul
sc config W32Time start= auto  &amp;gt; nul
net start W32Time &amp;gt; nul 2&amp;gt;&amp;amp;1
EXIT
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;2：使用 windows 自带 ntp 客户端进行时间同步的方法&lt;/h3&gt;
&lt;p&gt;1、开始--&amp;gt;运行输入 gpedit.msc&lt;/p&gt;
&lt;p&gt;2、计算机配置--&amp;gt;管理模板--&amp;gt;系统--&amp;gt;Windows 时间服务--&amp;gt;时间提供程序--&amp;gt;右单击“配置 Window NTP 客户端”，选择属性。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;     a、选择“已启用”
     b、在Ntp Server对应栏位输入时间同步服务器的地址。
     c、Tpye栏位选择NTP。
     d、SpecialPollInterval栏位输入需要同步的时间周期，单位：秒，如：每10分钟同步一次，输入600。
     e、确定。
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;3、计算机配置--&amp;gt;管理模板--&amp;gt;系统--&amp;gt;Windows 时间服务--&amp;gt;时间提供程序--&amp;gt;右单击“启用 Window NTP 客户端”，选择属性。&lt;br /&gt;
     a、选择“已启用”&lt;/p&gt;
&lt;p&gt;4、计算机配置--&amp;gt;管理模板--&amp;gt;系统--&amp;gt;Windows 时间服务--&amp;gt;时间提供程序--&amp;gt;右单击“启用 Window NTP 服务端”，选择属性。&lt;br /&gt;
     a、选择“已禁用”&lt;/p&gt;
&lt;p&gt;5、时间和日期属性中，填入时间同步服务器地址，方便必要时进行手动同步。&lt;/p&gt;
&lt;h3&gt;3：设置 Window7系统时间默认同步频率方法&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://jingyan.baidu.com/article/b0b63dbf177ec94a48307084.html&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://jingyan.baidu.com/article/b0b63dbf177ec94a48307084.html&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://jingyan.baidu.com/article/b0b63dbf177ec94a48307084.html&quot;&gt;https://jingyan.baidu.com/article/b0b63dbf177ec94a48307084.html&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;cmd 获取当前时间&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;@echo off 
::获取⽇期 将格式设置为：20110820 
set datevar=%date:~0,4%%date:~5,2%%date:~8,2% 
::获取时间中的⼩时 将格式设置为：24⼩时制 
set timevar=%time:~0,2% 
if /i %timevar% LSS 10 ( 
set timevar=0%time:~1,1% )
::获取时间中的分、秒 将格式设置为：3220 ，表⽰ 32分20秒 
set timevar=%timevar%%time:~3,2%%time:~6,2% 
@echo 当前时间：%datevar%%timevar%
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>Xshell 配色</title><link>https://fuwari.vercel.app/posts/xshell-xcs/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/xshell-xcs/</guid><description>文件名：monokai.xcs  保存在 X:\NetSarang Computer\6\Xshell\ColorScheme Files\monokai.xcs   monokai text=fff</description><pubDate>Sun, 10 Mar 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;文件名：monokai.xcs&lt;/p&gt;
&lt;p&gt;保存在 X:\NetSarang Computer\6\Xshell\ColorScheme Files\monokai.xcs&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[monokai]
text=ffffff
cyan(bold)=a6e22e
text(bold)=ffffff
magenta=f92672
green=80ff80
green(bold)=80ff80
background=272822
cyan=a6e22e
red(bold)=de8e30
yellow=66d9ef
magenta(bold)=f92672
yellow(bold)=66d9ef
red=de8e30
white=c0c0c0
blue(bold)=ae81ff
white(bold)=ffffff
black=000000
blue=ae81ff
black(bold)=000000
[Names]
name0=monokai
count=1
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>Linux 快速更换软件源</title><link>https://fuwari.vercel.app/posts/linux-sources/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/linux-sources/</guid><description>镜像下载   ✅  阿里巴巴开源镜像站-OPSX 镜像站https://developer.aliyun.com/mirror / 腾讯开源镜像站https://mirrors.cloud.tence</description><pubDate>Thu, 07 Mar 2019 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;镜像下载&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;✅&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://developer.aliyun.com/mirror&quot;&gt;阿里巴巴开源镜像站-OPSX 镜像站&lt;/a&gt; / &lt;a href=&quot;https://mirrors.cloud.tencent.com/help/&quot;&gt;腾讯开源镜像站&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;升级内核&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;CentOS 6/7系列用户&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;yum clean all &amp;amp;&amp;amp; yum makecache #进行软件源更新
yum update kernel  -y #更新当前内核版本
reboot #更新后 重启系统生效;
uname -a #检查当前版本是否为最新内核
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Ubuntu 16.04/18.04 LTS 系列用户&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;apt-get update &amp;amp;&amp;amp; apt-get install linux-image-generic #进行软件源更新并安装最新内核版本；
reboot #更新后 重启系统生效；
uname -a #检查当前版本是否为【安全版本】，如果是，则说明修复成功。 
# sudo 为可选
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;安装 epel 扩展源&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Centos7&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;yum install -y epel-release
wget -O /etc/yum.repos.d/epel-7.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all
yum makecache
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;h2&gt;Centos 换源命令&lt;/h2&gt;
&lt;p&gt;查看系统版本&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cat /etc/system-release
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;备份系统源&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mv /etc/yum.repos.d/CentOS-Base.repo  /etc/yum.repos.d/CentOS-Base.repo.backup
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Centos-网易源 (荐)&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;# Centos7
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;# Centos6
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS6-Base-163.repo
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;# Centos5
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS5-Base-163.repo
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;运行以下命令生成缓存&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;yum clean all
yum makecache
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Centos-阿里云源&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;# Centos7
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;# Centos6
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;# Centos5
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-5.repo
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;非阿里云 ECS 用户会出现 Couldn&apos;t resolve host &apos;mirrors.cloud.aliyuncs.com&apos; 信息，不影响使用。&lt;/li&gt;
&lt;li&gt;用户也可自行修改相关配置 修改命令如下&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;sed -i -e &apos;/mirrors.cloud.aliyuncs.com/d&apos; -e &apos;/mirrors.aliyuncs.com/d&apos; /etc/yum.repos.d/CentOS-Base.repo
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;运行以下命令生成缓存&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;yum clean all
yum makecache
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Debian 换源命令&lt;/h2&gt;
&lt;p&gt;查看系统版本&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cat /etc/issue
lsb_release -a
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;备份系统源&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mv /etc/apt/sources.list /etc/apt/sources.list.backup
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Debian-网易源 (荐)&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;# stretch_9
cat &amp;gt; /etc/apt/sources.list&amp;lt;&amp;lt;-EOF
deb http://mirrors.163.com/debian/ stretch main non-free contrib
deb http://mirrors.163.com/debian/ stretch-updates main non-free contrib
deb http://mirrors.163.com/debian/ stretch-backports main non-free contrib
deb-src http://mirrors.163.com/debian/ stretch main non-free contrib
deb-src http://mirrors.163.com/debian/ stretch-updates main non-free contrib
deb-src http://mirrors.163.com/debian/ stretch-backports main non-free contrib
deb http://mirrors.163.com/debian-security/ stretch/updates main non-free contrib
deb-src http://mirrors.163.com/debian-security/ stretch/updates main non-free contrib
EOF
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;# Jessie_8
cat &amp;gt; /etc/apt/sources.list&amp;lt;&amp;lt;-EOF
deb http://mirrors.163.com/debian/ jessie main non-free contrib
deb http://mirrors.163.com/debian/ jessie-updates main non-free contrib
deb http://mirrors.163.com/debian/ jessie-backports main non-free contrib
deb-src http://mirrors.163.com/debian/ jessie main non-free contrib
deb-src http://mirrors.163.com/debian/ jessie-updates main non-free contrib
deb-src http://mirrors.163.com/debian/ jessie-backports main non-free contrib
deb http://mirrors.163.com/debian-security/ jessie/updates main non-free contrib
deb-src http://mirrors.163.com/debian-security/ jessie/updates main non-free contrib
EOF
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;# wheezy_7
cat &amp;gt; /etc/apt/sources.list&amp;lt;&amp;lt;-EOF
deb http://mirrors.163.com/debian/ wheezy main non-free contrib
deb http://mirrors.163.com/debian/ wheezy-updates main non-free contrib
deb http://mirrors.163.com/debian/ wheezy-backports main non-free contrib
deb-src http://mirrors.163.com/debian/ wheezy main non-free contrib
deb-src http://mirrors.163.com/debian/ wheezy-updates main non-free contrib
deb-src http://mirrors.163.com/debian/ wheezy-backports main non-free contrib
deb http://mirrors.163.com/debian-security/ wheezy/updates main non-free contrib
deb-src http://mirrors.163.com/debian-security/ wheezy/updates main non-free contrib
EOF
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;运行以下命令生成缓存&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;apt update &amp;amp;&amp;amp; apt upgrade -y
或
apt-get update &amp;amp;&amp;amp; apt-get upgrade -y
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Debian-阿里云源&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;# buster_10
cat &amp;gt; /etc/apt/sources.list&amp;lt;&amp;lt;-EOF
deb http://mirrors.aliyun.com/debian/ buster main non-free contrib
deb http://mirrors.aliyun.com/debian/ buster-updates main non-free contrib
deb http://mirrors.aliyun.com/debian/ buster-backports main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ buster main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ buster-updates main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ buster-backports main non-free contrib
deb http://mirrors.aliyun.com/debian-security/ buster/updates main non-free contrib
deb-src http://mirrors.aliyun.com/debian-security/ buster/updates main non-free contrib
EOF
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;# stretch_9
cat &amp;gt; /etc/apt/sources.list&amp;lt;&amp;lt;-EOF
deb http://mirrors.aliyun.com/debian/ stretch main non-free contrib
deb http://mirrors.aliyun.com/debian/ stretch-updates main non-free contrib
deb http://mirrors.aliyun.com/debian/ stretch-backports main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ stretch main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ stretch-updates main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ stretch-backports main non-free contrib
deb http://mirrors.aliyun.com/debian-security/ stretch/updates main non-free contrib
deb-src http://mirrors.aliyun.com/debian-security/ stretch/updates main non-free contrib
EOF
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;# Jessie_8
cat &amp;gt; /etc/apt/sources.list&amp;lt;&amp;lt;-EOF
deb http://mirrors.aliyun.com/debian/ jessie main non-free contrib
deb http://mirrors.aliyun.com/debian/ jessie-updates main non-free contrib
deb http://mirrors.aliyun.com/debian/ jessie-backports main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ jessie main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ jessie-updates main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ jessie-backports main non-free contrib
deb http://mirrors.aliyun.com/debian-security/ jessie/updates main non-free contrib
deb-src http://mirrors.aliyun.com/debian-security/ jessie/updates main non-free contrib
EOF
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;# wheezy_7
cat &amp;gt; /etc/apt/sources.list&amp;lt;&amp;lt;-EOF
deb http://mirrors.aliyun.com/debian/ wheezy main non-free contrib
deb http://mirrors.aliyun.com/debian/ wheezy-updates main non-free contrib
deb http://mirrors.aliyun.com/debian/ wheezy-backports main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ wheezy main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ wheezy-updates main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ wheezy-backports main non-free contrib
deb http://mirrors.aliyun.com/debian-security/ wheezy/updates main non-free contrib
deb-src http://mirrors.aliyun.com/debian-security/ wheezy/updates main non-free contrib
EOF
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;运行以下命令生成缓存&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;apt update &amp;amp;&amp;amp; apt upgrade -y
或
apt-get update &amp;amp;&amp;amp; apt-get upgrade -y
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Ubuntu 换源命令&lt;/h2&gt;
&lt;p&gt;1查看系统版本&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cat /etc/issue
lsb_release -a
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;备份系统源&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 貌似18下不需要改动这个
# mv /etc/apt/sources.list /etc/apt/sources.list.backup
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;&lt;a href=&quot;https://opsx.alibaba.com/mirror?lang=zh-CN&quot;&gt;Ubuntu-阿里云源&lt;/a&gt;&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;# Ubuntu_18.04
cat &amp;gt; /etc/apt/sources.list.d/aliyun.list&amp;lt;&amp;lt;-EOF
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
EOF
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;运行以下命令生成缓存&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;apt update &amp;amp;&amp;amp; apt upgrade -y
或
apt-get update &amp;amp;&amp;amp; apt-get upgrade -y
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;其他&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;# 安装epel源后，更新yum缓存或者安装软件就会出现如下错误。
Cannot retrieve metalink for repository: epel/x86_64. Please verify its path and try again
# 间接方案:将https转为http
sed -i &apos;s#https://#http://#g&apos; /etc/yum.repos.d/epel*repo
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;更改 Linux 服务器终端显示语言为中文的脚本&lt;a href=&quot;https://github.com/wxlost/LocaleCN#%E4%BD%BF%E7%94%A8%E5%89%8D&quot;&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;wget -N --no-check-certificate https://raw.githubusercontent.com/FunctionClub/LocaleCN/master/LocaleCN.sh &amp;amp;&amp;amp; bash LocaleCN.sh
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>开启root登录权限</title><link>https://fuwari.vercel.app/posts/open-root/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/open-root/</guid><description>脚本介绍  将下面代码中的第一句中的vcQGwH79I70dLRzS改为自己将要设置的密码。   否则默认 root 密码为vcQGwH79I70dLRzS   切换到root sudo -i 从$变</description><pubDate>Thu, 07 Feb 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;脚本介绍&lt;/p&gt;
&lt;p&gt;将下面代码中的第一句中的&lt;code&gt;vcQGwH79I70dLRzS&lt;/code&gt;改为自己将要设置的密码。&lt;br /&gt;
否则默认 root 密码为&lt;code&gt;vcQGwH79I70dLRzS&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#切换到root
sudo -i
#从$变成#即为切换到root
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;脚本&lt;/p&gt;
&lt;p&gt;创建 instance 时，点击 add launch script,将下列代码复制进去(注意更改 root 密码).&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#!/bin/bash
echo root:vcQGwH79I70dLRzS sudo chpasswd root
sudo sed -i &apos;s/^#\?PermitRootLogin.*/PermitRootLogin yes/g&apos; /etc/ssh/sshd_config;
sudo sed -i &apos;s/^#\?PasswordAuthentication.*/PasswordAuthentication yes/g&apos; /etc/ssh/sshd_config;
sudo reboot
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;脚本-开启 root 密码登录&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sed -i &apos;s/^.*PasswordAuthentication.*/PasswordAuthentication yes/g&apos; /etc/ssh/sshd_config;
service sshd restart;
/etc/init.d/ssh restart;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;备注&lt;/p&gt;
&lt;p&gt;对于 EC2,GCE 等机器也可以使用。&lt;br /&gt;
不能添加代码的机器，可以登录进 ssh,再执行上面的代码。&lt;br /&gt;
也可以开启 root 登录。&lt;br /&gt;
以上代码在 Debian/Ubuntu 上通过测试。&lt;br /&gt;
其他发行版自行测试。&lt;/p&gt;
&lt;p&gt;其他&lt;/p&gt;
&lt;p&gt;在有些机器上开启后登录依然提示，是因为没有删除密钥前面的判断&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;vim /root/.ssh/authorized_keys
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;删除在 ssh-rsa 前面的全部内容，然后保存重启&lt;/p&gt;
</content:encoded></item><item><title>AWS Lightsail 更换IP脚本</title><link>https://fuwari.vercel.app/posts/lightsailm/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/lightsailm/</guid><description>脚本功能介绍     删除旧静态 IP    获取新静态 IP    绑定新静态 IP    解析 CloudFlare 的域名 IP 为新的 IP  https://onepve.com/wp-co</description><pubDate>Sun, 06 Jan 2019 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;脚本功能介绍&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;删除旧静态 IP&lt;/li&gt;
&lt;li&gt;获取新静态 IP&lt;/li&gt;
&lt;li&gt;绑定新静态 IP&lt;/li&gt;
&lt;li&gt;解析 CloudFlare 的域名 IP 为新的 IP&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;https://onepve.com/wp-content/uploads/2019/03/001.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;申请 AWS key&lt;/h2&gt;
&lt;p&gt;前往 &lt;a href=&quot;https://console.aws.amazon.com/iam/home?region=us-east-2#/security_credential&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://console.aws.amazon.com/iam/home?region=us-east-2#/security_credential&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://console.aws.amazon.com/iam/home?region=us-east-2#/security_credential&quot;&gt;https://console.aws.amazon.com/iam/home?region=us-east-2#/security_credential&lt;/a&gt; 获取即可&lt;/p&gt;
&lt;h2&gt;申请 CloudFlare API&lt;/h2&gt;
&lt;p&gt;前往 &lt;a href=&quot;https://www.cloudflare.com/a/login&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://www.cloudflare.com&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://www.cloudflare.com&quot;&gt;https://www.cloudflare.com&lt;/a&gt; 登录后，右上角选择 &lt;code&gt;My profile&lt;/code&gt;,最下面的&lt;code&gt;Global API Key&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;安装 AWS 组件&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;#Ubuntu_Debian
apt update -y
apt install python-pip wget -y
pip install awscli --upgrade
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;#Centos
yum update -y
yum install python-pip wget -y
pip install awscli --upgrade
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;获取脚本&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;wget https://r2.onepve.com/uploads/2024/07/aws.sh &amp;amp;&amp;amp; chmod +x aws.sh
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;✅ 编辑 aws.sh 内的参数后。运行脚本&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre&gt;&lt;code&gt;bash aws.sh default
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;✅&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;脚本后缀 default 为变量。以备后续添加多个机器调用&lt;/p&gt;
&lt;h2&gt;其他问题&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://docs.aws.amazon.com/cli/latest/userguide/awscli-install-linux.html&quot;&gt;官方文档&lt;/a&gt;&lt;br /&gt;
本人出现 debian 下 aws 无法执行。所以手动添加环境&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;export PATH=~/.local/bin:$PATH
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;内容写入&lt;code&gt;~/.bash_profile&lt;/code&gt;&lt;br /&gt;
然后读取&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;source ~/.bash_profile
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;#查看设置是否成功
aws --version
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;⚠️现存的问题。 同一地区存在 2个及以上的机器。会导致脚本过滤出多个 IP...能力有限。无法分割识别。...有大佬帮助下么。...&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;💡&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;截至 2019年 6月 4日 脚本使用正常。 如果不能用。请检查自己的 aws 环境，尤其是 aws 的机器名字是否变了。静态 IP 地址是否存在多个名字一样的。请手动删除多余的静态 IP 本人测试正常，朋友测试也正常。&lt;/p&gt;
&lt;p&gt;感谢支持&lt;/p&gt;
</content:encoded></item><item><title>在CentOS7上安装MongoDB</title><link>https://fuwari.vercel.app/posts/centos-mongodb/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/centos-mongodb/</guid><description>写出安装源       💡重复写入的话请先删除源文件。不然会追加内容    清华大学开源软件镜像站 国内推荐 仅支持 x86-64架构   cat  /etc/yum.repos.d/mongodb-</description><pubDate>Fri, 06 Jul 2018 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;写出安装源&lt;/h2&gt;
&lt;hr /&gt;
&lt;blockquote&gt;
&lt;p&gt;💡重复写入的话请先删除源文件。不然会追加内容&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;清华大学开源软件镜像站 国内推荐 仅支持 x86-64架构&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cat &amp;gt;&amp;gt; /etc/yum.repos.d/mongodb-org.repo &amp;lt;&amp;lt; EOF
[mongodb-org]
name=MongoDB Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/mongodb/yum/el\$releasever/
gpgcheck=0
enabled=1
EOF
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;原版安装 repo 国外推荐&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cat &amp;gt;&amp;gt; /etc/yum.repos.d/mongodb-org.repo &amp;lt;&amp;lt; EOF
[mongodb-org-3.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/\$releasever/mongodb-org/3.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc
EOF
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;查看 repo 写出是否正常&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;yum repolist
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;左边出现的内容含有 &lt;code&gt;mongodb-org&lt;/code&gt; 即为成功&lt;/p&gt;
&lt;h2&gt;安装/运行 MongoDB&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;yum install -y mongodb-org
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;使用 &lt;code&gt;systemctl&lt;/code&gt; 实用程序启动 MongoDB 服务&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;systemctl start mongod
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;查看启动日志&lt;/p&gt;
&lt;p&gt;尽管我们不会在本教程中使用它们，但您也可以使用&lt;code&gt;reload&lt;/code&gt;和&lt;code&gt;stop&lt;/code&gt;命令来更改 MongoDB 服务的状态。&lt;br /&gt;
如 &lt;code&gt;systemctl reload mongod&lt;/code&gt; 和 &lt;code&gt;systemctl stop mongod&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;tail /var/log/mongodb/mongod.log
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;配置文件修改&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;vim /etc/mongod.conf
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&quot;https://www.digitalocean.com/community/tutorials/how-to-install-mongodb-on-centos-7&quot;&gt;点我查看官网安装说明&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>在CentOS7上安装Redis</title><link>https://fuwari.vercel.app/posts/centos-redis/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/centos-redis/</guid><description>在 CentOS7上安装 Redis   Redis 在 Linux 上安装和简单的使用   yum 安装过程    快速安装redis  yum install redis -y systemctl</description><pubDate>Wed, 06 Jun 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;在 CentOS7上安装 Redis&lt;br /&gt;
Redis 在 Linux 上安装和简单的使用&lt;/p&gt;
&lt;h3&gt;yum 安装过程&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;# 快速安装redis 
yum install redis -y
systemctl start redis
systemctl enable redis
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;编译 安装过程&lt;/h3&gt;
&lt;p&gt;使用时请查看最新版本号自己更新&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;wget http://download.redis.io/releases/redis-5.0.6.tar.gz
tar xzf redis-5.0.6.tar.gz
cd redis-5.0.6
make
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;编译检查 执行下检查以免出现问题&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cd src
make test
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;最后出现 绿色的 &lt;code&gt;\o/ All tests passed without errors!&lt;/code&gt;表示检查通过没有错误&lt;/p&gt;
&lt;h2&gt;安装&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;make PREFIX=/usr/local/redis install
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;配置项目&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;cd ..
cp redis.conf /usr/local/redis
ls /usr/local/redis
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;启动 Redis&lt;/h2&gt;
&lt;p&gt;第一种方法：默认配置前台启动&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/usr/local/redis/bin/redis-server
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;第二种方法： 后台隐藏启动&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;vim /usr/local/redis/redis.conf
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;找到&lt;code&gt;daemonize no&lt;/code&gt;将其改为&lt;code&gt;yes&lt;/code&gt;（在 vim 中插入数据按键盘上的&lt;code&gt;i&lt;/code&gt;或者&lt;code&gt;insert&lt;/code&gt;）&lt;br /&gt;
按&lt;code&gt;esc&lt;/code&gt;退出 insert 模式，再按&lt;code&gt;:&lt;/code&gt;并且输入&lt;code&gt;wq&lt;/code&gt; 最后回车 表示保存并且退出&lt;br /&gt;
再次启动&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/usr/local/redis/bin/redis-server /usr/local/redis/redis.conf
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;查看是否启动&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ps -ef  grep -i redis
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;关闭 redis&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/usr/local/redis/bin/redis-cli shutdown
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;简单的使用&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;//首先链接客户端
/usr/local/redis/bin/redis-cli

//检查网络是否可以
127.0.0.1:6379&amp;gt; ping
PONG

//设置一个键值对
127.0.0.1:6379&amp;gt; set name cheny
OK

//获取刚刚设置的键值对
127.0.0.1:6379&amp;gt; get name
&quot;cheny&quot;

//查看所有的键
127.0.0.1:6379&amp;gt; keys *
1) &quot;name&quot;

//删除name这个键
127.0.0.1:6379&amp;gt; del name
(integer) 1
127.0.0.1:6379&amp;gt; keys *
(empty list or set)
127.0.0.1:6379&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;&lt;a href=&quot;http://www.runoob.com/redis/redis-install.html&quot;&gt;点我查看官网安装说明&lt;/a&gt;&lt;/h2&gt;
</content:encoded></item><item><title>安装 Python3 及 Pip3 并保留 Python2</title><link>https://fuwari.vercel.app/posts/centos-python3/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/centos-python3/</guid><description>最近玩 linux,不少东西用 Python   可系统自带的 2.6.6版本太低。所以需要手动升级到 Python3并且共存 Python2 Python2如果不存在将会导致 yum 无法使用   </description><pubDate>Sun, 06 May 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;最近玩 linux,不少东西用 Python&lt;br /&gt;
可系统自带的 2.6.6版本太低。所以需要手动升级到 Python3并且共存 Python2( Python2如果不存在将会导致 yum 无法使用)&lt;/p&gt;
&lt;h2&gt;yum 安装&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;CentOS 7&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;# 安装EPEL
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
# 安装Python3
yum install python36 -y
# 配置Python3软链接
ln -s /usr/bin/python3.6 /usr/bin/python3
# 安装pip3
wget https://bootstrap.pypa.io/get-pip.py
python3 get-pip.py
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;CentOS 6&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;# 安装EPEL
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
# 安装Python3和Redis
yum install python34 -y
# 安装pip3
wget https://bootstrap.pypa.io/get-pip.py
python3 get-pip.py
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Debian&lt;/code&gt;/&lt;code&gt;Ubuntu&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;apt update
apt install python3-pip -y
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;编译安装&lt;/h2&gt;
&lt;p&gt;编译在 CentOS7上操作了&lt;/p&gt;
&lt;h3&gt;安装需要的软件&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;yum groupinstall -y &quot;Development tools&quot;
yum install -y zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;下载解压 Python3&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;cd /root
wget https://www.python.org/ftp/python/3.12.4/Python-3.12.4.tar.xz
tar xf Python-3.12.4.tar.xz
cd Python-3.12.4
mkdir /usr/local/python3
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;编译与安装 Python3&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;./configure --prefix=/usr/local/python3
make &amp;amp;&amp;amp; make install
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;创建 Python3的软链接&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;ln -s /usr/local/python3/bin/python3 /usr/bin/python3
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;创建 Pip3的软链接&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;检查版本&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;python -V
python3 -V
pip3 -V
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;💡&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;可能需要的操作&lt;/p&gt;
&lt;h2&gt;pip3改为国内源&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;# 如果没有.pip目录就自己创建一个 mkdir /root/.pip

cat &amp;gt; /root/.pip/pip.conf &amp;lt;&amp;lt; EOF
[global]
index-url = http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com
EOF
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;改为国内 DNS&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;rm -rf /etc/resolv.conf &amp;amp;&amp;amp; echo -e &quot;nameserver 114.114.114.114\nnameserver 8.8.8.8&quot; &amp;gt;&amp;gt; /etc/resolv.conf
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>在Linux环境下，安装Node.js</title><link>https://fuwari.vercel.app/posts/linux-nodejs/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/linux-nodejs/</guid><description>脚本安装  先安装好 git    安装nvm wget -qO- https://raw.github.com/creationix/nvm/master/install.sh  sh   安装 n</description><pubDate>Fri, 06 Apr 2018 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;脚本安装&lt;/h2&gt;
&lt;p&gt;先安装好 git&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 安装nvm
wget -qO- https://raw.github.com/creationix/nvm/master/install.sh  sh
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;安装 nvm 完成后，重启终端并执行下列命令即可安装 Node.js&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;nvm install stable
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;npm 换国内源(可选)&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;npm install -g cnpm --registry=https://registry.npm.taobao.org
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;查看一下 nodejs 和 npm 的版本确认是否安装成功：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;node --version
npm --version
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;源码安装&lt;/h2&gt;
&lt;p&gt;下载源码及解压&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;wget http://nodejs.org/dist/v22.4.1/node-v22.4.1-linux-x64.tar.gz
tar zxvf node-v22.4.1-linux-x64.tar.gz
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;移动并重命名&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mv node-v22.4.1-linux-x64 /usr/local/
mv /usr/local/node-v22.4.1-linux-x64/ /usr/local/node
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;配置环境变量&lt;/p&gt;
&lt;p&gt;只对当前登录用户有效&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cd ~
vim .bash_profile
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;增加内容：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;export NODE_HOME=/usr/local/node
export PATH=$NODE_HOME/bin:$PATH
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在修改完文件后，还需要执行 source 才能使环境变量立即有效。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;source .bash_profile
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;对所有用户有效&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;vim /etc/profile
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;增加内容：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;export NODE_HOME=/usr/local/node
export PATH=$NODE_HOME/bin:$PATH
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在修改完文件后，还需要执行 source 才能使环境变量立即有效。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;source /etc/profile
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;检查版本&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;node -v
npm -v
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>几步指令优化+精简debian</title><link>https://fuwari.vercel.app/posts/debian-simplify/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/debian-simplify/</guid><description>前言：    一般系统运行都会自带一些我们不用的东西。   如果把这些东西删除能减少我们不小的内存开销   低内存机器，这种优化往往是必备。   升级 DEBIAN 系统   apt-get upda</description><pubDate>Sat, 03 Mar 2018 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;前言：&lt;/h2&gt;
&lt;p&gt;一般系统运行都会自带一些我们不用的东西。&lt;br /&gt;
如果把这些东西删除能减少我们不小的内存开销&lt;br /&gt;
低内存机器，这种优化往往是必备。&lt;/p&gt;
&lt;h3&gt;升级 DEBIAN 系统&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;apt-get update &amp;amp;&amp;amp; apt-get upgrade
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;输入后系统会更新源更新软件。确保系统在最新。&lt;/p&gt;
&lt;h3&gt;移除自带的多余的软件&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;apt-get -y purge rpcbind postfix exim4 bsd-mailx exim4-base exim4-config exim4-daemon-light 
apt-get -y purge apache2 apache2-* bind9-* xinetd samba-* nscd-* portmap sendmail-* sasl2-bin
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这些软件的用处：(可根据你自己的选择卸载/保存)&lt;/p&gt;
&lt;p&gt;apache2- &lt;em&gt;//apache 服务器，一般我们会自己来安装 233&lt;br /&gt;
bind9-&lt;/em&gt; //DNS 服务，一般不需要 DNS&lt;br /&gt;
xinetd //xinetd 是服务守护进程&lt;br /&gt;
samba- &lt;em&gt;//samba 能让 linux 使用 windows 共享功能，不需要&lt;br /&gt;
nscd-&lt;/em&gt; //DNS 缓存软件，同 bind9，不需要&lt;br /&gt;
portmap //端口转发，一般 Web 服务器不需要&lt;br /&gt;
sendmail-* //发送邮件用，如果有需要保留&lt;br /&gt;
sasl2-bin //一个权限程序，占用资源，删除&lt;/p&gt;
&lt;h3&gt;删除无用的自带组件&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;apt-get -y purge lynx memtester unixodbc odbcinst-* sudo tcpdump ttf-*
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这里也不说明用处 可自查&lt;/p&gt;
&lt;p&gt;如果你想卸载 Python 可以在里面添加 Python-*&lt;/p&gt;
&lt;h3&gt;清理缓存文件&lt;/h3&gt;
&lt;p&gt;做完这一切后，清理生成的缓存&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apt-get autoremove &amp;amp;&amp;amp; apt-get clean
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;后言：&lt;/p&gt;
&lt;p&gt;有事无事的时候(或者丢入 crontab 定时运行)&lt;code&gt;apt-get autoremove &amp;amp;&amp;amp; apt-get clean&lt;/code&gt;可清理内存，但是“缓存/cache”的内存也会被清理掉。&lt;/p&gt;
</content:encoded></item><item><title>Windows Server 2012/2008评估转正式版</title><link>https://fuwari.vercel.app/posts/win-convert-server/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/win-convert-server/</guid><description>公司某台测试服务器最初安装了 Evaluation 版 Windows Server 2012,测试完成通过 KMS 激活时提示非核心系统无法激活。这时可以通过将评估版转成正式版后再通过 KMS 激活</description><pubDate>Tue, 08 Aug 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;公司某台测试服务器最初安装了 Evaluation 版 Windows Server 2012,测试完成通过 KMS 激活时提示非核心系统无法激活。这时可以通过将评估版转成正式版后再通过 KMS 激活。方法如下：&lt;/p&gt;
&lt;p&gt;1、以管理员权限运行 cmd，输入 DISM /online /Get-CurrentEdition，查看当前系统版本，或通过 winver 命令图形界面查看。&lt;/p&gt;
&lt;p&gt;2、输入 DISM /online /Set-Edition: /ProductKey:XXXXX-XXXXX-XXXXX-XXXXX-XXXXX /AcceptEula&lt;/p&gt;
&lt;p&gt;为当前可以转换的版本，ProductKey 为产品 KEY。&lt;br /&gt;
我这里输入&lt;br /&gt;
DISM /online /Set-Edition:ServerStandard /ProductKey:D2N9P-3P6X9-2R39C-7RTCD-MDVJX /AcceptEula&lt;/p&gt;
&lt;p&gt;3、如需把标准版再升级至数据中心或企业版，可以先输入 dism /online /get-targeteditions，查看当前系统可以升级的目标版本，再通过第二步命令升级至较高版本。&lt;/p&gt;
&lt;p&gt;4、升级完成后，重新启动系统，系统已变成正式版。再通过&lt;a href=&quot;/tags/KMS/&quot;&gt;KMS 服务器激活&lt;/a&gt;，激活成功。&lt;/p&gt;
&lt;p&gt;PS：有关 DISM 命令的具体用法，请参考&lt;a href=&quot;http://technet.microsoft.com/zh-cn/library/dd744380(v=ws.10).aspx&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://technet.microsoft.com/zh-cn/library/dd744380(v=ws.10).aspx&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://technet.microsoft.com/zh-cn/library/dd744380(v=ws.10).aspx&quot;&gt;http://technet.microsoft.com/zh-cn/library/dd744380(v=ws.10).aspx&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://blog.51cto.com/lorysun/1306980&quot;&gt;点我查看原帖&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>h5ai 安装教程</title><link>https://fuwari.vercel.app/posts/h5ai/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/h5ai/</guid><description>H5ai 是一款功能强大 php 文件目录列表程序，由德国开发者 Lars Jung 主导开发，它提供多种文件目录列表呈现方式，支持多种主流 Web 服务器，例如 Nginx、Apache、Chero</description><pubDate>Thu, 27 Apr 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;H5ai 是一款功能强大 php 文件目录列表程序，由德国开发者 Lars Jung 主导开发，它提供多种文件目录列表呈现方式，支持多种主流 Web 服务器，例如 Nginx、Apache、Cherokee、Lighttpd 等，支持多国语言，可以使用本程序在线预览文本、图片、音频、视频等。&lt;/p&gt;
&lt;h2&gt;安装&lt;/h2&gt;
&lt;p&gt;1.1首先需要搭建好 Web 服务器，例如 LNMP（Linux/Nginx/MySQL/Php）组合，本文直接以 LNMP 组合为例。&lt;/p&gt;
&lt;p&gt;推荐使用 PHP 7版本。&lt;/p&gt;
&lt;p&gt;1.2下载 h5ai 安装包 本教程版本为 0.29.2&lt;/p&gt;
&lt;p&gt;转至官网下载：&lt;a href=&quot;https://larsjung.de/h5ai/&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://larsjung.de/h5ai/&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://larsjung.de/h5ai/&quot;&gt;https://larsjung.de/h5ai/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;1.3设置好虚拟主机后，在 默认文档文件名列表 后面增加&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/_h5ai/public/index.php
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;1.4去除被禁用的 PHP 函数：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;vim /usr/local/php/etc/php.ini
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;搜索 scandir 将其从被禁用的函数中删除。&lt;/p&gt;
&lt;p&gt;1.5重启 web 服务器：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;service php-fpm restart
service nginx reload
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;1.6虚拟主机 ROOT 目录大概是这个样子的，要在网站上显示的目录和 _h5ai 文件夹放在一起：&lt;/p&gt;
&lt;p&gt;.&lt;br /&gt;
├── _h5ai&lt;br /&gt;
│ ├── CHANGELOG.md&lt;br /&gt;
│ ├── private&lt;br /&gt;
│ ├── public&lt;br /&gt;
│ └── README.md&lt;br /&gt;
├── 您要显示的文件夹&lt;br /&gt;
│ ├── 子文件夹 1&lt;br /&gt;
│ ├── 文件 1&lt;br /&gt;
│ └── 文件 2&lt;br /&gt;
└── 您要显示的文件夹&lt;br /&gt;
├── 文件 1&lt;br /&gt;
└── 文件 2&lt;/p&gt;
&lt;h2&gt;开启 h5ai 更多功能&lt;/h2&gt;
&lt;p&gt;到目前为止，h5ai 可以正常使用了，但是我们可以开启 _h5ai 全部功能。通过 http(s)://your_domain/_h5ai/public/index.php 可以查看 _h5ai 的全部功能开启情况，默认密码是空的。&lt;/p&gt;
&lt;p&gt;2.1安装 FFmpeg&lt;/p&gt;
&lt;p&gt;debian 8：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 编辑软件源文件：
vim /etc/apt/sources.list

# 添加四个软件源
deb http://www.deb-multimedia.org jessie main non-free
deb ftp://ftp.deb-multimedia.org jessie main non-free
deb http://www.deb-multimedia.org stable main non-free
deb ftp://ftp.deb-multimedia.org stable main non-free
# 添加后保存且退出

# 更新软件源
apt-get -y update

# 安装 ffmpeg
apt-get -y install ffmpeg
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ubuntu 16.04+：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 直接通过命令安装：
apt-get -y install ffmpeg
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;CentOS7：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 直接通过命令安装：
yum -y install epel-release
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-1.el7.nux.noarch.rpm
yum -y install ffmpeg ffmpeg-devel
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;2.2略缩图功能&lt;/p&gt;
&lt;p&gt;2.2.1图片：&lt;br /&gt;
将 _h5ai 中，private 与 public 文件夹中的 cache 目录设置权限为 755。&lt;/p&gt;
&lt;p&gt;2.2.2 EXIF：&lt;br /&gt;
通过 phpize 安装 PHP 的 exif 模块即可。&lt;/p&gt;
&lt;p&gt;2.2.3视频略缩图：&lt;br /&gt;
参考 2.1安装 FFmpeg 即可。&lt;/p&gt;
&lt;p&gt;2.2.3 PDF 略缩图：&lt;br /&gt;
安装 ImageMagick。&lt;/p&gt;
&lt;p&gt;可使用如下命令：&lt;/p&gt;
&lt;p&gt;Ubuntu/Debian:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apt-get install ImageMagick -y
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;CentOS:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;yum install ImageMagick -y
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;2.3 Shell tar、Shell zip 和 Shell du&lt;/p&gt;
&lt;p&gt;参考 1.4去除在 php.ini 中被禁用函数 exec 与 passthru 即可。&lt;/p&gt;
&lt;p&gt;另外去除禁用的 scandir 函数（如果有），不然会导致无法显示目录。&lt;/p&gt;
&lt;p&gt;2.4 options.json 中的更多功能&lt;/p&gt;
&lt;p&gt;位于 _h5ai/private/conf 目录下。&lt;/p&gt;
&lt;p&gt;打包下载：&lt;br /&gt;
搜索 “download”&lt;br /&gt;
126行，enabled 由 false 改为 true。&lt;/p&gt;
&lt;p&gt;文件信息及二维码：&lt;br /&gt;
搜索 “info”&lt;br /&gt;
184行，enabled 由 false 改为 true。&lt;/p&gt;
&lt;p&gt;默认简体中文：&lt;br /&gt;
搜索 “l10n”&lt;br /&gt;
200行，enabled 由 false 改为 true。&lt;br /&gt;
201行，lang 由 en 改为 zh-cn。&lt;/p&gt;
&lt;p&gt;文件及文件夹搜索功能：&lt;br /&gt;
搜索 “search”&lt;br /&gt;
308行，enabled 由 false 改为 true。&lt;/p&gt;
&lt;p&gt;文件及文件夹多选：&lt;br /&gt;
搜索 “select”&lt;br /&gt;
322行，enabled 由 false 改为 true。&lt;/p&gt;
&lt;p&gt;默认密码：&lt;/p&gt;
&lt;p&gt;首先生成自定义 sha512密码：&lt;a href=&quot;http://md5hashing.net/hashing/sha512&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://md5hashing.net/hashing/sha512&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://md5hashing.net/hashing/sha512&quot;&gt;http://md5hashing.net/hashing/sha512&lt;/a&gt;&lt;br /&gt;
然后搜索 “passhash”，大概第 10行，将其密码改成自己生成的。&lt;br /&gt;
访问 &lt;a href=&quot;http://xn--eqrt2g/_h5ai/public/index.php&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://xn--eqrt2g/_h5ai/public/index.php&quot;&gt;http://域名/_h5ai/public/index.php&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;附加功能：给文件头或者尾部增加备注 —在文件夹目录下创建&lt;br /&gt;
&lt;strong&gt;_h5ai.footer.html&lt;/strong&gt; 和 &lt;strong&gt;_h5ai.header.html&lt;/strong&gt; 或 &lt;strong&gt;_h5ai.footers.html&lt;/strong&gt; 和 &lt;strong&gt;_h5ai.headers.html&lt;/strong&gt; (后缀可为 .md)&lt;/p&gt;
&lt;p&gt;关于中文文件夹乱码，请将系统编码改为 uft-8,具体请百度。教程很多，这里就不多说了。&lt;/p&gt;
&lt;p&gt;H5ai 的字体库更换其实很简单，在站点根目录下的&lt;code&gt;_h5ai/private/conf/options.json&lt;/code&gt;中找到&lt;code&gt;resources&lt;/code&gt;项，将&lt;code&gt;styles&lt;/code&gt;参数字符串中的&lt;code&gt;fonts.googleapis.com&lt;/code&gt;更换为&lt;code&gt;fonts.geekzu.org&lt;/code&gt;即可。&lt;/p&gt;
</content:encoded></item><item><title>PuTTY 汉化版</title><link>https://fuwari.vercel.app/posts/ssh-putty/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/ssh-putty/</guid><description>在 windows 下操作 linux 命令的小工具，非常好。  PuTTY 是一个跨平台的远程登录工具，包含了一组程序，包括： PuTTY Telnet 和 SSH 客户端   PSCP SCP 客</description><pubDate>Wed, 01 Mar 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;在 windows 下操作 linux 命令的小工具，非常好。&lt;/p&gt;
&lt;p&gt;PuTTY 是一个跨平台的远程登录工具，包含了一组程序，包括： PuTTY (Telnet 和 SSH 客户端)&lt;br /&gt;
PSCP (SCP 客户端， 命令行下通过 SSH 拷贝文件，类似于 Unix/Linux 下的 scp 命令)&lt;br /&gt;
PSFTP (SFTP 的命令行客户端，类似于 FTP 的文件传输，只不过使用的是 SSH 的 22端口，而非 FTP 的 21端口，类似于 Unix/Linux 下的 sftp 命令)&lt;br /&gt;
PuTTYtel (仅仅是一个 Telnet 客户端)&lt;br /&gt;
Plink (命令行工具，执行远程服务器上的命令)&lt;br /&gt;
Pageant (PuTTY、PSCP、Plink 的 SSH 认证代理，用这个可以不用每次都输入口令了)&lt;br /&gt;
PuTTYgen (用来生成 RSA 和 DSA 密钥的工具).&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;⚠️&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/larryli/PuTTY/releases&quot;&gt;&lt;strong&gt;中文版 GITHUB 下载地址&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Microsoft SQL Server 版本区分</title><link>https://fuwari.vercel.app/posts/win-mssql/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/win-mssql/</guid><description>MSSQL 版本区别 &amp; 下载       简介  很多用 visual studio 做开发的朋友经常会用到 sqlserver 数据库，但是往往在选择的时候就不知道该使用哪个版本了，今天就给大家分</description><pubDate>Mon, 02 Jan 2017 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;MSSQL 版本区别 &amp;amp; 下载&lt;/h2&gt;
&lt;hr /&gt;
&lt;h3&gt;简介&lt;/h3&gt;
&lt;p&gt;很多用 visual studio 做开发的朋友经常会用到 sqlserver 数据库，但是往往在选择的时候就不知道该使用哪个版本了，今天就给大家分享一下 sqlserver 各个版本之间的区别，以及各个版本之间功能的差别有哪些，这里引用的是微软 MSDN 的官方介绍。&lt;/p&gt;
&lt;h3&gt;LocalDB (SqlLocalDB)&lt;/h3&gt;
&lt;p&gt;LocalDB 是 Express 的一种轻型版本，该版本具备所有可编程性功能，但在用户模式下运行，并且具有快速的零配置安装和必备组件要求较少的特点。如果您需要通过简单方式从代码中创建和使用数据库，则可使用此版本。此版本可与 Visual Studio 之类的应用程序和数据库开发工具捆绑在一起，也可以与需要本地数据库的应用程序一起嵌入。&lt;/p&gt;
&lt;h3&gt;Express (SQLEXPR)&lt;/h3&gt;
&lt;p&gt;Express 版本仅包含 SQL Server 数据库引擎。它最适合需要接受远程连接或以远程方式进行管理的情况。&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;Express with Tools (SQLEXPRWT)&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;此包包含将 SQL Server 作为数据库服务器进行安装和配置所需的全部内容，包括 SQL Server xxxx Management Studio 的完整版本。根据您的上述需求来选择 LocalDB 或 Express。&lt;/p&gt;
&lt;h3&gt;SQL Server Management Studio Express (SQLManagementStudio)&lt;/h3&gt;
&lt;p&gt;此版本不包含数据库，只包含用于管理 SQL Server 实例的工具（包括 LocalDB、SQL Express、SQL Azure、SQL Server xxxx Management Studio 的完整版本等）。如果您拥有数据库且只需要管理工具，则可使用此版本。&lt;/p&gt;
&lt;h3&gt;Express with Advanced Services (SQLEXPRADV)&lt;/h3&gt;
&lt;p&gt;包含 SQL Server Express 的所有组件，包括 SQL Server xxxx Management Studio 的完整版本。此包的下载大小大于“带有工具”的版本，因为它还同时包含“全文搜索”和 Reporting Services。&lt;/p&gt;
&lt;h3&gt;使用建议&lt;/h3&gt;
&lt;p&gt;据以上各个版本的介绍说明&lt;/p&gt;
&lt;p&gt;Express with Advanced Services (&lt;strong&gt;SQLEXPRADV&lt;/strong&gt;)这个版本是功能最全面的一个，我们一般选择安装这个 。&lt;/p&gt;
&lt;p&gt;个人使用的话，推荐&lt;strong&gt;SQLEXPRWT&lt;/strong&gt; 。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;官方下载地址&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.microsoft.com/zh-CN/download/details.aspx?id=30438&quot;&gt;Microsoft SQL Server 2008R2&lt;/a&gt; &lt;a href=&quot;https://www.microsoft.com/zh-cn/download/details.aspx?id=35579&quot;&gt;Microsoft SQL Server 2012&lt;/a&gt; &lt;a href=&quot;https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads&quot;&gt;Microsoft SQL Server 2017&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>KMS服务器快速搭建(Linux)</title><link>https://fuwari.vercel.app/posts/kms-wget/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/kms-wget/</guid><description>KMS 容器搭建   docker pull teddysun/kms  启动kms容器（挂载时区+端口映射+自启） docker run -d -p 1688:1688 --name kms --r</description><pubDate>Sun, 01 Jan 2017 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;KMS 容器搭建&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;docker pull teddysun/kms
# 启动kms容器（挂载时区+端口映射+自启）
docker run -d -p 1688:1688 --name kms --restart=always -v /etc/localtime:/etc/localtime:ro -v /etc/timezone:/etc/timezone:ro teddysun/kms
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;KMS 手动搭建&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;安装命令-直接复制粘贴运行即可&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;killall kms-server
wget https://r2.onepve.com/uploads/2024/07/Linux/vlmcsd-x86-musl-static -O /usr/bin/kms-server
#wget https://r2.onepve.com/uploads/2024/07/Linux/vlmcsd-x64-musl-static -O /usr/bin/kms-server
#wget https://r2.onepve.com/uploads/2024/07/Linux/kms-server-arm -O /usr/bin/kms-server
chmod +x /usr/bin/kms-server
/usr/bin/kms-server
echo &apos;/usr/bin/kms-server&apos; &amp;gt;&amp;gt; /etc/rc.local
#chmod +x /etc/rc.d/rc.local
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;# 使用配置文件
wget https://r2.onepve.com/uploads/2024/07/Linux/vlmcsd.ini -O /etc/vlmcsd.ini
# 读取配置启动
killall kms-server
/usr/bin/kms-server -i /etc/vlmcsd.ini
# 记得开机启动项目也需要改
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;每行命令的作用说明&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;强制关闭kms服务器
下载kms服务器32位(可选64)
给予权限
运行KMS服务器
写入到开机启动
开启开机启动脚本权限(CentOS7)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;注意前面的#号，如果要执行带#号的这一行代码~请删掉#再执行。 这是注释符号，是基础啊懂不懂！&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://forums.mydigitallife.info/threads/50234-Emulated-KMS-Servers-on-non-Windows-platforms&quot;&gt;访问 KMS 原始网址&lt;/a&gt; &lt;strong&gt;/&lt;/strong&gt; &lt;a href=&quot;https://r2.onepve.com/uploads/2024/07/vlmcsd-1113-2020-03-28-Hotbird64.7z&quot;&gt;KMS 原版+源代码下载&lt;/a&gt; (密码：2020)&lt;/p&gt;
&lt;h3&gt;KMS 服务测试工具&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://r2.onepve.com/uploads/2024/07/kms_check.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://r2.onepve.com/uploads/2024/07/check_kms_0.4.3.1112.zip&quot;&gt;下载工具&lt;/a&gt; / &lt;a href=&quot;http://bbs.pcbeta.com/viewthread-1757484-1-1.html&quot;&gt;工具原地址&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>KMS 激活方案</title><link>https://fuwari.vercel.app/posts/kms/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/kms/</guid><description>MAS 激活   1. 激活 Windows 系统、激活 Office      现在 MAS 脚本激活系统超级方便！  下载脚本后，使用 TSforge 模式。然后根据你的需要选择激活 Window</description><pubDate>Sun, 01 Jan 2017 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;MAS 激活&lt;/h2&gt;
&lt;h3&gt;&lt;strong&gt;1. 激活 Windows 系统、激活 Office&lt;/strong&gt;&lt;/h3&gt;
&lt;hr /&gt;
&lt;p&gt;现在 MAS 脚本激活系统超级方便！&lt;/p&gt;
&lt;p&gt;下载脚本后，使用 TSforge 模式。然后根据你的需要选择激活 Windows 系统还是激活 Office&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://801818.xyz/MAS_AIO_CN.zip&quot;&gt;MAS 脚本下载&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item></channel></rss>