首页
留言板
统计
推荐
百度一下
Search
1
关于
56 阅读
2
飞牛NAS的ping命令脚本,自动检查网络是否通断来关机,一般配合UPS使用
55 阅读
3
Windows 10 22H2官方原版 + LTSC_2021_集成25年7月最新补丁
24 阅读
4
Windows 7 旗舰版 专业版 企业版 + Server2008R2DataCenter 7合1 最终收藏版
23 阅读
5
win7系统无法更新,报错80072EFE,解决办法
21 阅读
默认分类
资源分享
技能分享
登录
Search
Zrest's Blog
累计撰写
9
篇文章
累计收到
0
条评论
首页
栏目
默认分类
资源分享
技能分享
页面
留言板
统计
推荐
百度一下
搜索到
9
篇与
的结果
2025-08-18
高性价比、便宜的 VPS/云服务器推荐,2025/8月更新,开设MC服务器,建站均可!
一般服务器的数值1C2G5M指的是:1核CPU,2G内存,5M带宽提醒一下:如果你是新用户有优惠,能买多长时间就买多长时间,因为优惠价的服务器时间到后续费很贵的,而且新用户优惠只能买一次,所以尽量买长时间点划算。如果需要的配置比较高建议先买高配置的,因为购买后不是新用户无法再以优惠价购买其他了。目前 阿里云、腾讯云、华为云、UCloud 等这些大厂都是按主体(身份证)算新用户的,如果你同主体下已经有其他账号消费过了就不算新用户了,没法享受新用户优惠。目前国内排名前三的云服务厂商分别是阿里云、腾讯云、华为云。下面部分商家通过我链接注册的有额外优惠。阿里云:https://www.aliyun.com/minisite/goods?userCode=3jhao3pu腾讯云:https://curl.qcloud.com/2dJY7V7z雨云(性价比之选):https://www.rainyun.com/NzYxMjMy_国内服务器腾讯云,2核4G5M,188元/年(约15.67元/月),900元/3年(约25元/月);4C8G12M,575元/年(约47.92元/月);轻量 2C1G 200M不限流量,40元/月。Ucloud :香港轻量 1C2G 30M,93元/年(约7.75元/月);境内云主机 1C2G,506元/年(约42元/月)。天翼云: 4核8G,989元/年(约82.4元/月);。华为云: 2核4G2M,99元/年(约8.3元/月);4C8G6M,498元/年(约41.5元/月);8C16G10M,3549元/年(约295.7元/月) 。腾讯云学生机,2C2G4M,112元/年;4C8G12M,646元/年。阿里云小站,2核2G 200M,68元/年。雨云:湖北 100G高防,8C8G 20M,96元/月;香港四区,2C2G 50M,33元/月。 9950X高防,4C8G 15M,200元/月 。14900K高防,4C8G 15M,176元/月。宁波 8272CL,4核8G 300M,98元/月。糖糕云:13900K,4C16G10M,409元/月;5800X,4C16G10M,309元/月;E5-2666V3,4C16G10M,80元/月。野草云:香港BGP,1C2G 100M,138元/年(约11.5元/月)。北少云:湖北 7950X 500G高防,4C10G 15M,145元/月;河南8272CL,8C30G 20M,98元/月。AkileCloud:香港BGP,1C1G 1000M,24.99元/月;台湾,1C2G 1000M,24.99元/月;均为DNS解锁流媒体和IPv4/v6双栈网络。国外服务器搬瓦工,2C1G 1000M,49.99美元/年(约4.2美元/月),CN2线路,支持换IP。雨云:美国洛杉矶,2C2G 100M,18.9元/月 。极光KVM,洛杉矶1C1G 1000M,39.8元/月;香港1C1G 20M,29.66元/月。CloudCone,1C1G 1000M,3.71美元/月。DigitalOcean,1C1G,5美元/月,按小时计费,可以随时删服,通过我的链接注册充值25美元送100美元余额。FranTech,1C1G 1000M(锐龙3900X),3.5美元/月,无限流量,有DDoS防御;中国特别版 1C1G1000M 无限流量,解锁流媒体。莱卡云:美国9929,2C1G 20M,22.4元/月;韩国双ISP住宅IP,1C1G 100M,54元/月AkileCloud:日本 EPYC7002 三网优化,1C1G 1000M,37.35元/月;美国 7950X 三网直连,1C1G 1000M,37.49元/月;均为DNS解锁流媒体和IPv4/v6双栈网络。腾讯云:韩国轻量,2C1G 200M不限流量,35元/月。阿里云:泰国轻量,2C1G 200M不限流量,34元/月。
2025年08月18日
7 阅读
0 评论
0 点赞
2025-08-14
Python网页爬取小说
一、思路找到想看的小说的网站地址→爬取小说所有章节的网站地址→爬取每章小说的标题和内容→把内容保存到TXT文件二、具体步骤 1.找到小说网站 百度上有很多小说网站但是有些网站有反爬需要注意。2.爬取小说所有章节的网站地址 首先用浏览器打开小说网站,按F12我们看到章节链接在href里面,找到它的上一级鼠标移动到上一级标签,左边章节全部高亮,表示这个标签里包含了所有章节的链接,所以我们只要提去这个标签里的所有href 就可以获得所有的章节的网站地址。右键这个标签,复制,选择复制完整的xpath如下:/html/body/div[3]/div[2]/div/div/ul因为章节网站在href里所以加上//@href:/html/body/div[3]/div[2]/div/div/ul//@href然后我们就可以开始写代码了需要用到两个库:#pip install requests,pip install lxml import requests from lxml import etree开始解析网站import requests from lxml import etree url = "https://www.777zw.net/42/42670/" re= requests.get(url)#访问小说网站 re.encoding="utf-8"#改为utf-8格式,不然可能读取到的是乱码 selector=etree.HTML(re.text)#解析网站,变成HTML格式 urs=selector.xpath("/html/body/div[3]/div[2]/div/div/ul//@href") #利用Xpath,读取HTML里的信息,从而获取所以章节的链接 urs就包含了所以的章节链接地址。打印一下:['27769200.html', '27769202.html', '27769204.html', '27769206.html', '27769207.html'。。。。。 '31256765.html', '31256766.html']爬取到的网站是不全的,我们需要在前面加上https://www.777zw.net/42/42670/ 就是url for i in urs: urls1=url+i re1 = requests.get(urls1)#re1章节页面 re1.encoding = "utf-8" selector1 = etree.HTML(re1.text)这样我们就爬取到了每个章节网站。3.爬取每个章节的内容 我们先进入第一章小说的网页,发现内容里包含了章节名称我们就不用提取章节名字了,爬取内容就可以使用F12 得到内容的xpath地址/html/body/div[4]/div/div/div[2]/div[2]需要得到里面的内容就是/html/body/div[4]/div/div/div[2]/div[2]//text()//text()是得到该节点下所有的文本,/text()是得到当前节点的文本内容=selector1.xpath("/html/body/div[4]/div/div/div[2]/div[2]//text()") neir = "" for x in 内容: neir = neir + str(x) + "\n"这样就在每句话后面加了一个换行符。 with open("重生后,我娇养了反派镇北王.txt","a",encoding="utf-8") as f: f.write(neir) 最后写入txt就可以了with open("打开一个txt,没有就创建一个",a是追加写入,utf-8是写入文件格式) as f是该txt文件简称。完整代码:import requests from lxml import etree url = "https://www.777zw.net/42/42670/" re= requests.get(url) re.encoding="utf-8"#re书名页 selector=etree.HTML(re.text)#分析网站,变成HTML格式 urs=selector.xpath("/html/body/div[3]/div[2]/div/div/ul//@href")#获取所以章节的链接 for i in urs: urls1=url+i re1 = requests.get(urls1)#re1章节页面 re1.encoding = "utf-8" selector1 = etree.HTML(re1.text) 内容=selector1.xpath("/html/body/div[4]/div/div/div[2]/div[2]//text()") neir = "" for x in 内容: neir = neir + str(x) + "\n" with open("重生后,我娇养了反派镇北王.txt","a",encoding="utf-8") as f: f.write(neir)优化后的代码: #pip install requests,pip install lxml import requests from lxml import etree url = "https://www.777zw.net/42/42670/" re= requests.get(url) re.encoding="utf-8"#re书名页 selector=etree.HTML(re.text)#分析网站,变成HTML格式 urs=selector.xpath("/html/body/div[3]/div[2]/div/div/ul//@href")#获取所以章节的链接 shum=selector.xpath("/html/body/div[3]/div[1]/div/div/div[2]/div[1]/h1/text()")[0]#获取书名,因为得到是列表所以要【0】 Y=0 print(f"{shum}开始下载,共{len(urs)}章") for i in urs: urls1=url+i re1 = requests.get(urls1)#re1章节页面 re1.encoding = "utf-8" selector1 = etree.HTML(re1.text) 内容=selector1.xpath("/html/body/div[4]/div/div/div[2]/div[2]//text()") neir="" for x in 内容: neir=neir+str(x)+"\n" with open(shum+".txt","a",encoding="utf-8") as f: f.write(neir) Y = Y + 1 print(f"第{Y}章下载完成") if Y==10:#下载第10章后退出程序 exit()
2025年08月14日
4 阅读
0 评论
0 点赞
2025-08-14
惠普577dw彩色打印机无法使用第三方墨盒,固件降级,固件下载。
电脑先安装好打印机驱动,跟打印机用usb连接好,下载固件,运行固件安装程序即可完成。如出现问题先重启打印机在拔插USB线即可。固件下载地址:https://download.csdn.net/download/a7568712/90202560
2025年08月14日
6 阅读
0 评论
0 点赞
2025-08-06
win7系统无法更新,报错80072EFE,解决办法
https://download.csdn.net/download/a7568712/88062935?spm=1001.2014.3001.5501
2025年08月06日
21 阅读
0 评论
0 点赞
2025-08-06
飞牛NAS的ping命令脚本,自动检查网络是否通断来关机,一般配合UPS使用
飞牛NAS Ping命令监控关机脚本部署指南 步骤1:创建脚本文件 登录飞牛NAS的SSH(确保已启用SSH访问) 飞牛的系统设置里,设置SSH开启。 在 Windows 上连接飞牛 NAS 的 SSH 详细指南 使用 Windows PowerShell(内置工具,无需安装) 打开 PowerShell(或者CMD): 按 Win + R 输入 powershell(或者CMD) 回车 或者在开始菜单搜索 "PowerShell" 并打开 连接 SSH: powershell ssh 用户名@NAS的IP地址 例如: powershell ssh admin@192.168.1.100 (其中admin改成你自己的飞牛NAS账号) 首次连接确认: 输入 yes 接受主机密钥 输入密码: 输入您在飞牛NAS上设置的密码(输入时不会显示字符) 成功连接: 看到类似 admin@freenas:~ $ 的提示符表示连接成功 接下来的命令都在powershell(或者CMD)中链接飞牛SSH后输入: 1.创建脚本目录(默认创建在飞牛文件管理中的app文件夹里): CMD: sudo mkdir -p /vol1/1000/app/ping_monitor sudo chown -R $(whoami) /vol1/1000/app/ping_monitor 2.创建脚本文件: CMD: nano /vol1/1000/app/ping_monitor/ping_monitor.sh 3.将脚本完整内容粘贴到文件中(或者可以直接在飞牛的文件里搜索ping_monitor.sh,找到它写入代码,代码在本文章最下面) 4.保存文件(Ctrl+O,回车,Ctrl+X) 步骤2:设置脚本权限 CMD: chmod +x /vol1/1000/app/ping_monitor/ping_monitor.sh 步骤3:安装必要依赖(可以跳过不装) CMD: sudo apt update sudo apt install jq -y # 安装JSON处理工具 步骤4:配置脚本参数(可选) 编辑脚本文件修改以下参数: CMD: nano /vol1/1000/app/ping_monitor/ping_monitor.sh 需要关注的配置项(最下面代码的内容): ping_monitor.sh: TARGET_IP="192.168.0.1" # 修改为您的路由器IP MAX_FAILURES=10 # 连续失败次数阈值(默认10次) MIN_UPTIME=300 # 最小运行时间(默认300秒=5分钟) SHUTDOWN_DELAY=15 # 关机前等待时间(默认15秒) 步骤5:设置定时任务 编辑crontab: CMD: crontab -e 添加以下行(意思是每分钟运行一次ping_monitor.sh): CMD: * * * * * /vol1/1000/app/ping_monitor/ping_monitor.sh 保存退出(Ctrl+O,回车,Ctrl+X) 步骤6:测试脚本 手动运行脚本: CMD: /vol1/1000/app/ping_monitor/ping_monitor.sh 检查日志: CMD: tail -f /vol1/1000/app/ping_monitor/logs/ping_monitor.log 正常输出应类似: text 2025-07-02 10:30:45 - INFO - ===== Ping监控启动 ===== 2025-07-02 10:30:45 - INFO - 系统运行时间: 12345s 2025-07-02 10:30:45 - INFO - 目标IP: 192.168.0.1, 最大失败次数: 10 2025-07-02 10:30:45 - INFO - 当前失败计数: 0 2025-07-02 10:30:45 - INFO - 状态更新完成。下次检查在1分钟后。 这个代码里的通知功能没有用,无法通知,运行的具体的信息都能在LOG日志里面找到。 ping_monitor.sh:# Ping监控关机脚本 for 飞牛NAS(防止开机死循环) - 优化版 # 配置参数 TARGET_IP="192.168.0.1" # 监控的目标IP(修改为您的路由器IP) MAX_FAILURES=10 # 连续失败次数阈值 MIN_UPTIME=300 # 最小运行时间(秒)300秒=5分钟 SHUTDOWN_DELAY=15 # 关机前等待时间(秒) LOG_DIR="/vol1/1000/app/ping_monitor/logs" DATA_FILE="/vol1/1000/app/ping_monitor/ping_failure_count.json" LOCK_FILE="/vol1/1000/app/ping_monitor/.shutdown_lock" LOG_FILE="$LOG_DIR/ping_monitor.log" MAX_LOG_SIZE=2048576 # 最大日志大小(1MB) MAX_LOG_FILES=5 # 保留的历史日志文件数量 # 确保目录存在 mkdir -p "$LOG_DIR" || { echo "无法创建日志目录: $LOG_DIR" >&2 exit 1 } # 日志轮转函数 rotate_logs() { [ -f "$LOG_FILE" ] || return 0 # 检查日志大小 local log_size=$(wc -c < "$LOG_FILE" 2>/dev/null) [ -z "$log_size" ] && log_size=0 if [ "$log_size" -ge "$MAX_LOG_SIZE" ]; then # 删除最旧的日志文件 local oldest_log="${LOG_FILE}.${MAX_LOG_FILES}" [ -f "$oldest_log" ] && rm -f "$oldest_log" # 轮转日志文件 for i in $(seq $((MAX_LOG_FILES-1)) -1 1); do local src="${LOG_FILE}.${i}" local dest="${LOG_FILE}.$((i+1))" [ -f "$src" ] && mv -f "$src" "$dest" done # 移动当前日志 mv -f "$LOG_FILE" "${LOG_FILE}.1" # 创建新日志文件 echo "日志轮转完成于 $(date)" > "$LOG_FILE" fi } # 日志记录函数 log() { local level=$1 local message=$2 local timestamp=$(date "+%Y-%m-%d %H:%M:%S") # 安全地轮转日志 rotate_logs 2>/dev/null # 写入日志 echo -e "${timestamp} - ${level} - ${message}" >> "$LOG_FILE" 2>/dev/null } # 发送通知函数 send_notification() { local title=$1 local message=$2 # 方法1: 使用飞牛官方通知API if command -v fn_notify &>/dev/null; then fn_notify -t "$title" -m "$message" -p high >/dev/null 2>&1 && return 0 fi # 方法2: 使用DBus发送通知 if command -v dbus-send &>/dev/null; then dbus-send --session --dest=org.freedesktop.Notifications \ --type=method_call /org/freedesktop/Notifications \ org.freedesktop.Notifications.Notify \ string:"Ping Monitor" uint32:0 string:"" \ string:"$title" string:"$message" \ array:string:"" dict:string:string:"" int32:5000 >/dev/null 2>&1 && return 0 fi # 方法3: 尝试使用curl发送通知(如果API可用) if command -v curl &>/dev/null; then curl -s -X POST -H "Content-Type: application/json" \ -d "{\"title\":\"$title\", \"message\":\"$message\", \"priority\":\"high\"}" \ http://localhost:3040/api/notification >/dev/null 2>&1 && return 0 fi log "WARNING" "无法发送通知: $title - $message" return 1 } # Ping检测函数 ping_ip() { # 使用不同的ping工具以适应不同环境 if command -v ping &>/dev/null; then ping -c 2 -W 5 "$TARGET_IP" > /dev/null 2>&1 elif command -v busybox &>/dev/null; then busybox ping -c 2 -W 5 "$TARGET_IP" > /dev/null 2>&1 else log "ERROR" "未找到ping命令!" return 1 fi return $? } # 获取系统运行时间(秒) get_uptime() { cut -d' ' -f1 /proc/uptime | cut -d. -f1 } # 增强版加载失败次数 load_failure_count() { [ -f "$DATA_FILE" ] || return 0 # 安全读取JSON文件 local json_data=$(<"$DATA_FILE") [ -z "$json_data" ] && return 0 # 使用多种方法解析JSON local count last_update last_ip # 方法1: 使用jq if command -v jq &>/dev/null; then count=$(jq -r '.count' <<< "$json_data" 2>/dev/null) last_update=$(jq -r '.last_update' <<< "$json_data" 2>/dev/null) last_ip=$(jq -r '.last_ip' <<< "$json_data" 2>/dev/null) fi # 方法2: 使用grep/awk(备用方法) if [ -z "$count" ] || [ -z "$last_update" ] || [ -z "$last_ip" ]; then count=$(grep '"count"' "$DATA_FILE" | awk -F': ' '{print $2}' | tr -d ', ') last_update=$(grep '"last_update"' "$DATA_FILE" | awk -F': ' '{print $2}' | tr -d ', ') last_ip=$(grep '"last_ip"' "$DATA_FILE" | awk -F': ' '{print $2}' | tr -d '" ,') fi # 验证数据 [[ "$count" =~ ^[0-9]+$ ]] || count=0 [[ "$last_update" =~ ^[0-9]+$ ]] || last_update=0 [[ "$last_ip" =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]] || last_ip="" local current_time=$(date +%s) # 检查是否超过24小时或IP改变 if [ "$last_ip" != "$TARGET_IP" ] || \ [ $((current_time - last_update)) -gt 86400 ]; then log "INFO" "重置计数器 (IP变更或超过24小时)" echo 0 return fi echo "$count" } # 增强版保存失败次数 save_failure_count() { local count=$1 local current_time=$(date +%s) # 创建临时文件 local temp_file="${DATA_FILE}.tmp.$$" # 构建JSON数据 cat > "$temp_file" <<EOF { "count": $count, "last_update": $current_time, "last_ip": "$TARGET_IP" } EOF # 验证并移动文件 if [ -s "$temp_file" ]; then mv -f "$temp_file" "$DATA_FILE" chmod 644 "$DATA_FILE" log "DEBUG" "保存失败计数: $count" else log "ERROR" "创建数据文件失败" rm -f "$temp_file" fi } # 关机提示函数 shutdown_warning() { local remaining=$1 # 在控制台显示倒计时 if [ -t 1 ]; then echo -ne "\r\033[K" # 清除当前行 echo -ne "NAS将在 ${remaining}秒 后关机! 按Ctrl+C取消" fi # 发送系统通知 if [ $((remaining % 10)) -eq 0 ] || [ $remaining -le 5 ]; then send_notification "NAS关机警告" "检测到网络故障,NAS将在${remaining}秒后关机!" fi # 记录日志 log "WARNING" "关机倒计时: ${remaining}秒" } # 飞牛NAS专用关机函数 shutdown_nas() { log "CRITICAL" "启动关机流程: 连续$MAX_FAILURES次ping失败 ($TARGET_IP)" # 发送最终关机通知 send_notification "NAS正在关机" "检测到连续${MAX_FAILURES}次网络故障,NAS即将关机!" # 方法1: 使用飞牛官方关机API log "INFO" "尝试通过飞牛API关机" if curl -s -X POST "http://localhost:3040/api/system/shutdown" >/dev/null 2>&1; then log "INFO" "飞牛API关机命令已发送" return fi # 方法2: 使用DBus关机(飞牛推荐) log "INFO" "尝试通过DBus关机" if command -v dbus-send >/dev/null 2>&1; then if dbus-send --system --print-reply --dest=org.freenas.system \ /org/freenas/system org.freenas.system.Shutdown >/dev/null 2>&1; then log "INFO" "DBus关机命令已发送" return fi fi # 方法3: 使用系统ctl关机 log "INFO" "尝试通过systemctl关机" if command -v systemctl >/dev/null 2>&1; then systemctl poweroff if [ $? -eq 0 ]; then log "INFO" "systemctl poweroff命令已发送" return fi fi # 方法4: 传统关机命令 log "INFO" "尝试传统shutdown命令" if /sbin/shutdown -h now; then log "INFO" "传统shutdown命令已发送" return fi # 方法5: 紧急关机 log "CRITICAL" "所有关机方法均失败! 尝试紧急关机" sync echo 1 > /proc/sys/kernel/sysrq echo o > /proc/sysrq-trigger } # 清理函数 cleanup() { rm -f "${DATA_FILE}.tmp.*" exit 0 } # 主程序 main() { trap cleanup EXIT INT TERM # 检查是否以root身份运行 if [ "$(id -u)" -ne 0 ]; then echo -e "\n错误: 脚本必须以root权限运行\n" >&2 exit 1 fi # 检查关机锁文件 if [ -f "$LOCK_FILE" ]; then log "WARNING" "检测到关机锁文件 - 重置状态" rm -f "$LOCK_FILE" save_failure_count 0 fi # 获取系统运行时间 local uptime=$(get_uptime) # 检查是否达到最小运行时间 if [ "$uptime" -lt "$MIN_UPTIME" ]; then log "INFO" "系统运行时间不足 (${uptime}s < ${MIN_UPTIME}s),跳过检查" save_failure_count 0 send_notification "NAS已启动" "系统正在启动中,监控将在${MIN_UPTIME}秒后开始" exit 0 fi log "INFO" "===== Ping监控启动 =====" log "INFO" "系统运行时间: ${uptime}s" log "INFO" "目标IP: $TARGET_IP, 最大失败次数: $MAX_FAILURES" # 加载失败次数 failure_count=$(load_failure_count) log "INFO" "当前失败计数: $failure_count" # 执行Ping测试 if ping_ip; then # Ping成功时重置计数器 if [ "$failure_count" -gt 0 ]; then log "INFO" "网络恢复! 重置计数器 (原计数: $failure_count)" send_notification "网络恢复" "到 ${TARGET_IP} 的网络连接已恢复" fi save_failure_count 0 else # Ping失败时增加计数器 failure_count=$((failure_count + 1)) log "WARNING" "Ping失败! 失败计数: $failure_count/$MAX_FAILURES" save_failure_count "$failure_count" # 当接近关机阈值时发送警告 if [ $failure_count -ge $((MAX_FAILURES - 1)) ]; then send_notification "网络故障警告" "到 ${TARGET_IP} 的连接失败 (${failure_count}/${MAX_FAILURES}次)" fi # 检查是否达到关机阈值 if [ "$failure_count" -ge "$MAX_FAILURES" ]; then log "CRITICAL" "达到最大失败次数! 准备关机..." # 关机前强制重置计数器 save_failure_count 0 # 创建关机锁文件 touch "$LOCK_FILE" # 关机倒计时 log "WARNING" "开始 ${SHUTDOWN_DELAY} 秒关机倒计时" for ((i=SHUTDOWN_DELAY; i>0; i--)); do shutdown_warning $i sleep 1 done # 添加空行清除倒计时显示 [ -t 1 ] && echo # 执行关机 log "CRITICAL" "正在关闭NAS..." shutdown_nas exit 0 fi fi log "INFO" "状态更新完成。下次检查在1分钟后。" } # 执行主程序 main
2025年08月06日
55 阅读
0 评论
0 点赞
1
2