首页
留言
导航
统计
Search
1
追番推荐!免费看动漫的网站 - 支持在线观看和磁力下载
2,512 阅读
2
推荐31个docker应用,每一个都很实用
1,312 阅读
3
PVE自动启动 虚拟机 | 容器 顺序设置及参数说明
931 阅读
4
一条命令,永久激活!Office 2024!
618 阅读
5
优选 Cloudflare 官方 / 中转 IP
490 阅读
默认分类
服务器
宝塔
VPS
Docker
OpenWRT
Nginx
群晖
前端编程
Vue
React
Angular
NodeJS
uni-app
后端编程
Java
Python
SpringBoot
SpringCloud
流程引擎
检索引擎
Linux
CentOS
Ubuntu
Debian
数据库
Redis
MySQL
Oracle
虚拟机
VMware
VirtualBox
PVE
Hyper-V
计算机
网络技术
网站源码
主题模板
登录
Search
标签搜索
Java
小程序
Redis
SpringBoot
docker
Typecho
Cloudflare
docker部署
虚拟机
WordPress
群晖
uni-app
CentOS
Vue
Java类库
Linux命令
防火墙配置
Mysql
脚本
Nginx
微醺
累计撰写
264
篇文章
累计收到
11
条评论
首页
栏目
默认分类
服务器
宝塔
VPS
Docker
OpenWRT
Nginx
群晖
前端编程
Vue
React
Angular
NodeJS
uni-app
后端编程
Java
Python
SpringBoot
SpringCloud
流程引擎
检索引擎
Linux
CentOS
Ubuntu
Debian
数据库
Redis
MySQL
Oracle
虚拟机
VMware
VirtualBox
PVE
Hyper-V
计算机
网络技术
网站源码
主题模板
页面
留言
导航
统计
搜索到
55
篇与
的结果
2024-01-15
MusicTag音乐刮削软件,用它刮音乐的专辑、歌词、封面非常方便
前言上次用群晖搭建音乐媒体中心,就说想要找一个类似TMM的音乐刮削软件,后来在网友的推荐下发现了 Music Tag 这款软件,用它来刮削音乐的名称、歌手、专辑、封面真的太好用了。它的界面很简单,和我之前用的 Mp3tag 很像,但是平凡却不普通,它上部为菜单栏,左侧为音乐的标签栏,右侧为文件列表。使用初次使用要添加索引的目录可以添加多个或者随意更改所有目录,设置好以后,每次打开都会读取设置好目录中的音乐。设置好目录后,目录中所有的因为文件都会被扫描出来了。先来介绍一下 Music Tag 刮削的数据源,它的数据源包括 网易云、QQ音乐、itunes、酷狗、酷我 等,基本上网易云和QQ音乐就能找到绝大多数的音乐信息,有它们两个就足够了。下面介绍一下如何利用 Music Tag 刮削音乐的标签, 选中 我们想要下载标签的音乐,可以单选,可多选,然后 点击 上方的 自动匹配标签 按键,会弹出一个窗口,让我们选择我们想要刮削的信息,同时在后面 勾选 是否覆盖我们的原有标签。如果同时刮削的音乐比较多,需要等一段时间,不过速度还是很快的。刮削完成后,可以在左侧标签栏看到刮削到的信息,信息很全面,名称、歌手、专辑、年份、音轨号、歌词、封面都可以下载到,我的400多首歌曲,都能轻松完成标签的设置,而且信息准确,非常好用。完成刮削后,要保存一下标签信息,当然对标签不满意的,不保存原有信息就不会变了。批量重命名除了刮削音乐的标签,它还有一个功能和好用,就是可以批量重命名,我喜欢用标题-艺术家的形式命名歌曲,它可以快速实现批量重命名,当然,它还有更多自定义的命名方法。结尾使用 Music Tag 刮削完并整理好的音乐,全部都有音乐封面,而且在车上听歌,显示的音乐信息和封面都很准确,真是非常好用的一款软件。
2024年01月15日
138 阅读
0 评论
0 点赞
2023-12-30
Linux服务器上传|下载命令测速方法
这边使用 speedtest 测速安装命令:wget https://raw.github.com/sivel/speedtest-cli/master/speedtest.py chmod a+rx speedtest.py mv speedtest.py /usr/local/bin/speedtest chown root:root /usr/local/bin/speedtest运行 speedtest 检测运行命令:speedtest如果想把测出来的数据生成为图片命令如下:speedtest --share
2023年12月30日
22 阅读
0 评论
0 点赞
2023-10-20
【Minecraft开服教程】使用 MCSM 面板一键搭建我的世界服务器,并内网穿透公网远程联机
文章目录Mcsmanager安装创建Minecraft服务器本地测试联机内网穿透前言MCSManager 是一个开源、分布式、轻量级、一键开服、支持大部分游戏服务端和控制台程序的管理工具,我们可以用它来一键部署搭建Minecraft我的世界服务器,跟小伙伴们联机。现在一般家庭局域网宽带没有公网IP,不在同个局域网下的小伙伴没办法直接联机。所以我们在这个教程中同时做内网穿透,将本地端口映射到公网上,使用所生成的公网地址来远程联机,突破局域网的限制,不需要公网IP,不需要设置路由器,也不用购买云服务器。1.Mcsmanager安装点击下载 MCSManager ,我们下载windwos版本 【不支持windwos10以下系统安装】 。下载好后解压打开,然后点击启动器,启动后台程序启动后,会自动跳转到浏览器打开,如没有跳转,可直接在浏览器输入localhost:23333,首次访问需要我们创建一个账号然后即可进入到面板界面2.创建Minecraft服务器在面板中,我们点击快速开始,创建一个Minecraft 服务器选择一键开服这里可以自由选择相应的版本,这里选择1.19.2原版,点击安装然后输入服务器的名称,输入后等待安装完成安装完成后,点击前往实例控制台然后出现联机方式,我们点击下面跳过设置联机方式的选择接下来修改配置文件,取消正版服务器的验证,点击文件管理找到 server.properties 文件,点击编辑把 online-mode 的值改为 false ,然后保存,关闭然后开启实例,这里的实例表示服务的意思启动成功,我们可以看到端口信息,端口号为:255653.本地测试联机打开我的世界启动器,选择和服务器一样的版本1.19.2,启动然后点击多人游戏正常来说会自动搜索到这个本地服务器,可以直接点击即可连接如果没有,我们可以点击下面的直接连接,然后输入地址:127.0.0.1:25565,点击加入服务器然后我们可以看到成功进入了游戏4. 内网穿透测试本地联机正常后,我们接着做内网穿透,实现在外不同网络环境下的远程联机。内网穿透网上很多,有收费的和免费的这里就不介绍了。在本地安装成功后,创建一条隧道将我的世界服务端口映射到公网上,然后使用所生成的公网地址来远程联机就可以了。
2023年10月20日
128 阅读
0 评论
0 点赞
2023-10-18
让你免费拥有一个无限大小的存储服务器【全过程分享】
前言前段时间玩了AList,突发奇想既然RaiDrive能把Alist映射到本地,那是不是能把映射盘部署到服务器呢?这样我就有了一个无限大小的存储了,既然写了这篇文章,说明还是可以的,这篇没什么技术含量,没有什么深层次解读,只说实现过程细节步骤,查的资料也比较多,只是觉得有趣记录一下,如果涉及到谁的原创内容我没说请私聊,我给你名字和链接加上(/doge 保命)话不多说,开搂步骤大纲使用Alist管理网盘使用RaiDrive把Alist映射到本地把映射盘部署到服务器一:Alist管理网盘Alist:相当于一个聚合网盘管理器,能实现网盘的统一管理,并能达到文件在线浏览的效果AList 开源项目地址: https://github.com/alist-org/alist可以点击链接下载Alist Windows最新版:https://github.com/alist-org/alist/releases/download/v3.28.0/alist-windows-amd64.zip也可以在官网找自己喜欢的版本,但是注意新版本(V3 及更高版本)与 V2 不兼容下载完成后解压,在解压后的文件夹中打开cmd,运行 alist server 启动服务password is 后面是初始密码 start server 后面是 AList 的管理页面地址,IP(127.0.0.1/localhost) + 端口然后打开浏览器,输入链接127.0.0.1:5244 / localhost:5244输入账号(admin)密码(刚刚的初始密码)进入管理页面后可以点击右下角管理,修改初始密码,重新登录接下来添加需要管理的网盘,这里以百度网盘为例点击 管理 -> 存储 -> 添加驱动 选择百度网盘挂载路径 是根目录下的文件夹WebDav策略 推荐选择代理地址刷新令牌 为你百度网盘的 refresh_token ,官方文档里有获取方法:获取客户端ID与密匙 会自动获取,无需手动填写参数填写完毕后,直接点击添加 这就添加好了,接下来你就可以通过本机IP+端口访问网盘了如果要添加更多网盘,可以去 官方文档 查看,基本步骤都大差不差二:使用RaiDrive把alist映射到本地盘RaiDrive:将云存储和网络存储映射在本地磁盘 RaiDrive官网 :www.raidrive.com/ (点击Download下载)下载好后,打开 install 一直无脑下一步即可(注意安装位置,不建议安装到C盘)安装好后打开,点击 添加 服务类型 :选择 NAS —— WebDAV 虚拟驱动器 :前面是盘符,后面是名字,可以自行选择地址 :取消勾选,http后面填Alist的登陆地址,下面填/dav账户 :刚刚Alist登录的账号密码随后点击 连接 ,搞定此时在我的电脑里就多一个盘,打开之后就会显示Alist中管理的网盘注意:此处的磁盘大小为 7.99EB !!而 1EiB = 1,024 PiB = 1,048,576 TiB = 1,073,741,824 GiB 先别急着幻想,其实没有这么大,只不过是 没办法显示具体的大小,而随机生成的大小而已 /doge三:部署到服务器这里详细步骤我就不赘述了直接使用 Idea 新建一个web工程,配置Tomcat,默认 "Hello World" 出现之后(说明工程没有问题)在 Deployment 中添加映射路径选择刚刚添加的映射路径然后启动服务打开网页输入地址:localhost(ip):8080(Tomcat端口)/bd(Application context)至此,大功告成拓展啥?你问我这有啥用?既然都部署到服务器了,那还不是被咱玩弄于股掌之间以Android为例随便写个数据库 存放个文件路径,刚刚的web项目里 随便写个接口把路径返回,Android随便写个请求 从接口拿到数据,再随便找个播放器加载(顺便提一嘴,如果不行。。。那就是你写的太随便了/doge)注意事项还记得第一步,解压 Alist 的时候,启动了 alist server 的窗口吗,这个是在线的, 不能关闭!!! 关闭会导致Alist获取不到网盘资源,那么RaiDrive自然也就映射不到本地所以如果不想麻烦每次都手动启动,可以写个脚本实现:隐藏cmd窗口开机自启动 隐藏cmd窗口 :在 Alist解压文件夹 中新建一个 txt ,填入以下内容Set ws = CreateObject("Wscript.Shell") ws.run "D:\alist\alist.exe server",vbhide MsgBox "success"ws.run 修改为你 alist.exe 的路径保存之后将后缀改为 vbs 双击打开即可,弹出 success 说明启动成功这时你会发现,并没有cmd黑窗口弹出,打开alist管理页面,一切正常,🆗可以在任务管理器的进程中找到你启动的脚本,也可以在此处结束进程开机自启动 :将刚刚 vbs 文件,添加个快捷方式(注意!是快捷方式)打开运行( Win + R ),输入 shell:startup ,再将快捷方式拖入打开的文件夹里重启测试下,开机后等待success窗口弹出,大功告成!结语Alist加载会有延迟,对于过大的文件,有时亦会导致卡顿,对于宽带会有一定的要求,目前网上对Alist各网盘的优化和解决办法很多,大家可以根据自己的需求添加完善内网访问效果理想,若想在公网访问,无论是本地穿透,还是部署到云服务器,都需要通过服务器中转,转发之后具体能达到什么样的效果需要测试,如果有哪位大佬做出来了欢迎告知本篇没什么深层讲解,因此也没什么难度,按照步骤一步一步来即可,如果有问题随时提问,要是我哪里写错了,别客气,过来给我一巴掌,就行了(温柔点,别打肿,影响颜值就不好了/doge)。
2023年10月18日
35 阅读
0 评论
0 点赞
2023-09-26
微软发布史上最强虚拟机!流畅度堪比主机(附保姆级安装教程)
虚拟化技术有以下几个关键概念虚拟化技术的优点Hyper-V 简介启动 Hyper-V创建虚拟机虚拟化技术有以下几个关键概念主机(Host):也称为宿主机或物理机,指实际物理计算机,它上面部署了虚拟化软件的hypervisor。客户机(Guest):也称为虚拟机实例,指在主机上运行的虚拟环境,每个客户机都运行独立的操作系统和应用程序。Hypervisor:虚拟机监控器,是虚拟化软件的核心组件,负责管理和分配主机资源给客户机,并提供虚拟机的隔离性和管理功能。Hypervisor可以分为两种类型:类型1 Hypervisor(裸金属Hypervisor):直接安装在物理硬件上,作为主机操作系统。它能够更好地利用硬件资源,提供更高的性能和效率,而且更稳定可靠。类型2 Hypervisor(主机操作系统上的Hypervisor):安装在主机操作系统之上,例如在Windows或Linux操作系统之上。它相对较轻量,易于安装和管理,但性能和效率可能略低。资源池化:虚拟化技术可以将主机上的物理资源进行整合和共享,形成一个资源池。资源池可以根据需要动态分配和调整资源,提高资源利用率,实现更好的性能和灵活性。快照与复制:虚拟化技术提供了创建虚拟机快照和复制的功能。通过快照,可以记录虚拟机在某个时间点的状态,并在需要时进行还原。这对于备份、恢复和测试非常有用。虚拟化技术的优点资源利用率提高:通过虚拟化,可以更好地利用和共享物理计算机的资源,提高硬件资源的利用率。灵活性和可扩展性:虚拟化技术允许在同一台物理机上创建多个虚拟环境,根据需求动态配置和调整资源,以实现更好的灵活性和可扩展性。简化管理:虚拟化技术通过虚拟机管理工具提供集中化的管理和监控功能,简化了物理服务器的管理工作。高可用性和容灾:通过虚拟机迁移和聚合技术,可以实现虚拟机的高可用性和灾难恢复,提高系统的可靠性和稳定性。无论你是软件开发人员、IT 专业人员还是技术爱好者,你们中的许多人都需要运行多个操作系统。Hyper-V 让你可以在 Windows 上以虚拟机形式运行多个操作系统。Hyper-V 简介Hyper-V 是微软推出的一款虚拟化技术,它能够在单一物理服务器上运行多个虚拟机操作系统。Hyper-V 包含在 Windows Server 操作系统中,并允许管理员创建,运行和管理虚拟化服务器和虚拟机。Hyper-V 可以帮助企业节省硬件成本,提高应用程序可用性和灵活性,同时减少维护和管理成本。它还可以作为一种工具来测试不同操作系统和应用程序配置,以及支持迁移和备份虚拟机。Hyper-V 支持 Windows 操作系统和其他一些非 Windows 操作系统,如 Linux、FreeBSD 等。系统要求Windows 10 企业版、专业版或教育版;具有二级地址转换 (SLAT) 的 64 位处理器;CPU 支持 VM 监视器模式扩展(Intel CPU 的 VT-c 技术);最少 4 GB 内存;首先,确认您的计算机支持 Hyper-V 技术。具体方法是,在运行框中输入“msinfo32”进入系统信息界面,查看“Hyper-V需求存在”项是否为“是”。启动 Hyper-V通过 PowerShell 启动 以管理员身份打开 PowerShell 控制台,运行下面的命令。Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All使用 CMD 和 DISM 启用 Hyper-V 以管理员身份打开 PowerShell 或 CMD 会话。键入以下命令:DISM /Online /Enable-Feature /All /FeatureName:Microsoft-Hyper-V通过设置启动右键单击 Windows 按钮并选择“应用和功能”。选择相关设置下右侧的“程序和功能”。选择“打开或关闭 Windows 功能”。选择“Hyper-V”,然后单击“确定”。安装完成后,系统会提示你重新启动计算机。创建虚拟机从 “开始” 菜单中打开 “Hyper-V Quick Create” 。选择一个操作系统或者使用本地安装源选择你自己的操作系统。如果你想要使用自己的映像创建虚拟机,请选择 Local Installation Source。选择 Change Installation Source。选择要转变为新虚拟机的 .iso 或 .vhdx。如果映像为 Linux 映像,请取消选择“安全启动”选项。选择 “创建虚拟机” 就这么简单!“快速创建” 将完成其余的工作。现在,你可以安装操作系统了。简单配置一下,然后就重新启动,之后就可以正常进入系统了。创建虚拟机其实和Vmware没什么区别。安装Win11虚拟机创建虚拟机时,选择本地安装源,点击更改安装源,选择你提前下载的Win11的iso镜像文件,此虚拟机将运行 Windows 保持默认勾选,点击右下角更多选项,给虚拟机一个名称和网络,网络选择Default Switch即可(你也可以选择你提前创建的网络)。然后点击创建虚拟机进入后续步骤。创建完虚拟机后,别着急点连接!!!选择编辑设置。在硬件>安全配置项下,加密支持下,一定一定一定要勾选启用受信任的平台模块(加密状态和虚拟机迁移流量选项可选可不选)。如果不勾选启用受信任的平台模块,在后面安装Windows时,将会提示:这台电脑无法运行Windows 11。在硬件>内存配置项下,RAM推荐最少4096 MB,默认为2048 MB,然后应用即可。现在你可以在成功创建虚拟机界面,点击连接按钮,来连接你创建的虚拟机了。点击启动按钮,你可能会看到如下界面,Press any key to boot from CD or DVD,>>Start PXE over IPv4。如果不出意外的话,你应该就能看到下面的安装界面了。唯一需要强调的是在你想执行哪种类型的安装,选择自定义:仅安装Windows(高级)选项。一切都配置完后,你可能会进入到看不到Windows的登录页面。如果无登录页面,你需要在菜单栏的"查看",取消"增强会话",然后自动重启后,即可看到登录界面,然后登录即可开始你的win11体验之旅。目前,微软又发布新版本(根据 22621.1848这个版本发布的)!下载地址:https://developer.microsoft.com/zh-cn/windows/downloads/virtual-machines/ 有兴趣的可以下载自行体验,安装方法和上面一样。
2023年09月26日
21 阅读
0 评论
0 点赞
2023-09-21
自建远程桌面连接服务,RustDesk搭建教程
什么时候需要远程协助呢? 可能是远程自己在家的电脑,方便游戏排队或者下载文件;也可能是远程单位电脑,进行远程办公;当然,我觉得更多情况是远程小伙伴,帮小伙伴解决一些技术问题。远程协助,除了可以用向日葵、QQ远程和Todesk等软件,有没有一款安全、经济和快速的软件呢?RustDesk本次教程教给大家如何通过 RustDesk ,部署自己的自建远程平台。主要的优点:安全性:RustDesk使用安全的加密通信协议来保护数据传输,确保远程桌面连接的安全性和隐私保护。跨平台支持:RustDesk支持跨多个操作系统平台,包括Windows、macOS和Linux、Android等,这使得它非常灵活和适用于不同的工作环境。而且从名字可以看出,RustDesk是使用Rust所编写,而使用Rust编写的程序,两大特点就是高效和并发,实际使用上,一台亚马逊入门(1C1G)EC2或者Lightsail(1C2G)给个人或者小型团队使用是没有问题的。准备工具服务器目前, RustDesk 支持 Linux Server 和 Windows Server 服务器;看自己的取舍,Linux比较节约资源,而Windows方便小白上手。为了重新体现我们是Linux技术博主,本次搭建使用 Linux Server 进行演示。根据 RustDesk 官网描述和实际测试,一台1C 1G的亚马逊EC2,中继模式下,8对设备远程依旧不卡!!!如果你是Windows Server用户,那么建议至少选择2C 4G的服务器配置,毕竟需要让Windows Server可以跑起来;本文主要演示Linux Server的方法。RustDesk部署下载服务端Github地址 我们使用的是X86版本服务器,所以这里我们下载X86版本的服务包:拷贝下载地址,到服务器上使用wget进行下载和解压:# 使用wget进行下载1.1.8-2版本(最新版本可以看上述发布地址) wget https://github.com/rustdesk/rustdesk-server/releases/download/1.1.8-2/rustdesk-server-linux-amd64.zip # 使用unzip解压 unzip rustdesk-server-linux-amd64.zip # 重命名解压后文件(方便管理) mv amd64 RustDesk现在,我们的RustDesk前期的准备就完成了。接下来,我们尝试运行,之后再注册为服务。尝试运行我们可以先尝试运行一下;确保可以使用后,我们再使用pm2挂起访问,或者systemctl注册为服务。为了方便我们测试,这里使用screen双开两个虚拟终端,并以前台模式挂起后端进程:# 安装screen sudo apt install screen之后,在刚刚我们的RustDesk解压后的目录内,可以看到相关的文件:RustDesk├── hbbr├── hbbs└── rustdesk-utils解释一下各个作用:hbbs: RustDesk的ID服务,用于分配和注册ID;hbbr: RustDesk的中继服务,主要远程访问就是这个,如果直连远程不行,会使用hbbr进行流量中继。之后,我们使用两个screen进行启动:# 创建一个叫myHbbs的虚拟终端: screen -R myHbbs # 运行hbbs ./hbbs通常情况下就会启动成功:使用screen启动hbbs紧接着,Ctrl+a 和 d 返回主终端,启动 hbbr 。# 创建一个叫yHbb的虚拟终端: screen -R myHbbr # 运行hbbr ./hbbr到此,如果没什么防火墙、安全组问题, RustDesk 就启动完成了。使用screen启动hbbr使用screen启动完成查看这个 RustDesk 目录,就可以发现,多了一些数据库文件和一个证书文件:RustDesk├── db_v2.sqlite3├── db_v2.sqlite3-shm├── db_v2.sqlite3-wal├── hbbr├── hbbs├── id_ed25519├── id_ed25519.pub└── rustdesk-utils我们需要拷贝.pub这个公钥文件,用于接下来的本地配置:拷贝公钥文件比如,我的公钥文件内容:C6bJn7*50nCK3y4=接下来,我们可以进行本地的配置。本地配置到 RustDesk 上的客户端下载地址,下载我们的客户端:RustDesk 客户端 Github 发布地址 通常情况下,我们下载最新的发布版本即可:比如:我这里安装macOS,并打开:点击上面的三个点,进入配置:找到网络配置:解锁网络配置,上方两个输入你的服务器IP,下方的Key输入上一步内我们拷贝的公钥(对于我是C6bJn7*50nCK3y4=),如果你有使用域名,IP部分也可以使用域名(CDN不行):我们没有开启强制加密,所以理论上key不填写,也可以进行连接;只是,不填写key,网络传输可能不安全。到此,我们的配置配置就完成了。我们可以体验一下。注册服务现在,我们回到服务端。刚刚使用的screen可能不太优雅,这里我们准备了两个方案注册为访问,方便管理。使用pm2运行如果要使用pm2运行,需要提前安装nodejs,使用nodejs的软件包管理器(npm或者yarn)安装pm2。安装nodejs的方法,我在之前的文章内已经说的十分详细,这里就不再过多介绍,如果不知道如何操作,可以参考:Windows/macOS/Linux上安装Node.js,并使用NVM管理多版本Node.js 就简单说一下思路和使用命令吧:# 安装nvm git clone https://github.com/nvm-sh/nvm.git ~/.nvm # 追加到环境变量 echo 'export NVM_DIR="$HOME/.nvm"' >> ~/.zshrc echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm' >> ~/.zshrc # 重载环境变量 source ~/.zshrc # 使用nvm安装18版本nodejs nvm install 18 # 使用nodejs的npm安装pm2 npm install -g pm2之后,使用pm2的命令,启动hbbr和hbbs:# 当前正在RustDesk的目录内 pm2 start hbbs pm2 start hbbr之后,就可以发现。RustDesk已经启动。 具体的pm2使用,以后有机会和大家讲解。使用Systemctl运行我其实挺喜欢用 systemctl 的;但是上篇文章,其实已经足够详细,这里就直接给配置的脚本吧,我们需要创建两个Server,首先是 hbbs :[Unit] Description=RustDesk Hbbs After=network.target [Service] User=mintimate Type=simple WorkingDirectory=/home/mintimate/myApplication/RustDesk ExecStart=/home/mintimate/myApplication/RustDesk/hbbs ExecStop=/bin/kill -TERM $MAINPID [Install] WantedBy=multi-user.target之后是 hbbr :[Unit] Description=RustDesk Hbbr After=network.target [Service] User=mintimate Type=simple WorkingDirectory=/home/mintimate/myApplication/RustDesk ExecStart=/home/mintimate/myApplication/RustDesk/hbbr ExecStop=/bin/kill -TERM $MAINPID [Install] WantedBy=multi-user.target到此,使用 Systemctl 注册为服务就完成啦。其实也可以使用 screen ,就是重启系统后,再次启动比较麻烦。Q&A个人的一些使用经验,还有一些常见的问题。如何开启强制加密如果你搭建好了 RustDesk 后,会发发现:不需要设置 key ,也可以进行 RustDesk 的连接。这是因为 RustDesk 默认服务器端会开启加密,但是并不强制。如何你想开启强制加密,可以在启动 hbbr 和 hbbs 的时候,加上参数 -k _ :./hbbr -k _ ./hbbs -k _这样,客户端建立的连接,就需要强制设置好 key ,也就是我们的 *.pub 文件,否则无法建立通讯和远程连接。
2023年09月21日
208 阅读
0 评论
0 点赞
2023-09-21
[VPS评测] - VPS主机评测脚本
新买的 VPS 一般都要测试下性能,收集了网络上常见测试 VPS脚本一、秋水逸冰VPS性能测试脚本wget -qO- bench.sh | bash二、BlueSkyXN综合工具箱wget -O box.sh https://raw.githubusercontent.com/BlueSkyXN/SKY-BOX/main/box.sh && chmod +x box.sh && clear && ./box.sh三、SuperSpeed.sh 修复版bash <(curl -Lso- https://git.io/superspeed_uxh)四、一键检测VPS回程国内三网路由curl https://raw.githubusercontent.com/zhanghanyun/backtrace/main/install.sh -sSf | sh五、流媒体解锁测试一键脚本bash <(curl -L -s https://raw.githubusercontent.com/lmc999/RegionRestrictionCheck/main/check.sh)
2023年09月21日
113 阅读
0 评论
0 点赞
2023-09-21
One Manager 搭建一个美观的网盘
前几天闲着没事,就去逛别人的博客,经常能够看到网盘,感觉很美观,今天就用 One Manager 搭建一个一样美观的网盘1.什么是 One Manager?这是一个利用微软onedrive api将onedrive目录映射成一个云盘的程序(同时支持阿里云盘),类似的程序有很多,比如OneIndex、Pyone、OnePoint等等。2.One Manager 能做什么?通过借助onedrive和阿里云盘等网盘api和refresh_token,把云盘映射到网站上,从而达成直接在网站上上传文件(直接同步到网盘上),用直链直接下载文件,管理文件,并让访客访问的目的。3.如果要搭建,该准备些什么?虚拟主机——近年来,虚拟主机的价格一跌再跌,几乎新手类的入门虚拟主机30左右一年,当然也有免费的羊毛可以薅,这里推荐腾讯云(速度快,有保障),小鱼云(速度快,实惠,不用备案),乐数云(可白嫖),如果找到可行的主机都可以域名——这就不用多说了,想要被访问,域名必不可少,最近的各大厂也是疯狂甩卖白菜价的top,xyz域名(硅云0元,西数1元,腾讯9元,请根据自己需要,以及认为cdn哪个加速快选用),freenom也是一个不错的选择,tk,ml,ga顶级域名都是免费的,但是最近又看了下,貌似失效了,也不知道什么时候恢复One Manager 本体软件GitHub作者链接:https://github.com/qkqpttgf/OneManager-php蓝奏云备用链接:https://wwck.lanzouf.com/iYKMm0l9uzlc(如果打不开请把lanzouf改成lanzoui或者lanzouw)以下是详细教程最最基础部分,先进行虚拟主机域名的解析与绑定首先打开你的虚拟主机的控制面板界面,点击域名绑定(由于各厂商不同,就不放图了)看虚拟主机提示的想要绑定,先解析的链接(如果是ip地址,都行,请看好是用cname还是a记录解析)打开域名管理界面,添加解析记录,如果是ip,大部分情况下用a记录,主机名随便填,@的话,是你访问的云盘就是你的域名,xxx的话,你的云盘访问地址就是xxx.你的域名,在后面选择解析方式,cname或者a,然后把ip或者链接填到记录值一栏,其余的就不用管了在虚拟主机绑定你的域名,记住你要绑定的目录下载源码,打开ftp文件管理进行在线上传,将你下载的源码进行上传,并解压到你绑定的目录,保证那一堆文件在你绑定的目录里面接下来就可以在浏览器输入你的网盘地址,进行设置了由于各个厂商的主机默认配置不同,进入配置时,如果出现伪静态设置错误可自行百度 “One Manager伪静态” 或者复制以下代码复制到目录里面的 .htaccess 文件# # Apache # # LoadModule rewrite_module modules/mod_rewrite.so # # AllowOverride All RewriteEngine On # RewriteCond $1 !^(.well-known) RewriteRule ^(.*) index.php?/$1 [L] ### nginx # rewrite ^/(?!.well-known)(.*)$ /index.php?/$1 last; # ### nginx Subdirectory 在子目录中使用 # location /OneManager2/ { # rewrite ^/(.*)$ /OneManager2/index.php?/$1 last; # } # ### caddy # rewrite { # to index.php?/$1 # } # ### caddy2 Caddyfile # @try_files { # not path /.well-known/* # file { # try_files index.php # } # } # rewrite @try_files {http.matchers.file.relative} # 进入网站设置完成后,可见到这样的界面点击左上角的登录,输入你自己设置的密码登录成功后,登录按钮变成了管理,点击后再点击设置,进行添加盘在添加盘的左侧选择你要添加的盘(推荐阿里云盘和onedrive,在国内速度还行,其余差不多都需要魔法)阿里云盘搭建方法先点击添加盘,按要求输入标签和名称,接下来就要获取refresh tokenhttps://alist.nn.ci/zh/guide/drivers/aliyundrive.html 打开网址,点击获取 token ,用手机阿里云盘扫描二维码,再点击下按钮,就能够获取token再次进入你的添加盘的界面,输入 token ,就可以看到阿里云盘挂载成功了onedrive搭建方法点击添加盘,根据默认的设置直接添加标签和名称,会自动跳转到 microsoft登录,登录就可以挂载成功了如果觉得界面不够美观,可以点击平台变量进行设置https://www.cnblogs.com/braless/p/14173750.html 该网站可以教你如何个性化你的网盘这边建议游客主题设置为 classic ,比较美观结尾注意事项登录成功进行上传文件后,请点击管理-刷新当前目录缓存,游客端方可看见文件
2023年09月21日
44 阅读
0 评论
0 点赞
2023-07-20
18个常用 Shell 脚本, 太好用啦~
1、检测两台服务器指定目录下的文件一致性#!/bin/bash ###################################### 检测两台服务器指定目录下的文件一致性 ##################################### #通过对比两台服务器上文件的md5值,达到检测一致性的目的 dir=/data/web b_ip=192.168.88.10 #将指定目录下的文件全部遍历出来并作为md5sum命令的参数,进而得到所有文件的md5值,并写入到指定文件中 find $dir -type f|xargs md5sum > /tmp/md5_a.txt ssh $b_ip "find $dir -type f|xargs md5sum > /tmp/md5_b.txt" scp $b_ip:/tmp/md5_b.txt /tmp #将文件名作为遍历对象进行一一比对 for f in `awk '{print 2} /tmp/md5_a.txt'`do #以a机器为标准,当b机器不存在遍历对象中的文件时直接输出不存在的结果 if grep -qw "$f" /tmp/md5_b.txt then md5_a=`grep -w "$f" /tmp/md5_a.txt|awk '{print 1}'` md5_b=`grep -w "$f" /tmp/md5_b.txt|awk '{print 1}'` #当文件存在时,如果md5值不一致则输出文件改变的结果 if [ $md5_a != $md5_b ]then echo "$f changed." fi else echo "$f deleted." fi done 2、定时清空文件内容,定时记录文件大小#!/bin/bash ################################################################# 每小时执行一次脚本(任务计划),当时间为0点或12点时,将目标目录下的所有文件内#容清空,但不删除文件,其他时间则只统计各个文件的大小,一个文件一行,输出到以时#间和日期命名的文件中,需要考虑目标目录下二级、三级等子目录的文件 ################################################################ logfile=/tmp/`date +%H-%F`.log n=`date +%H` if [ $n -eq 00 ] || [ $n -eq 12 ] then #通过for循环,以find命令作为遍历条件,将目标目录下的所有文件进行遍历并做相应操作 for i in `find /data/log/ -type f` do true > $i done else for i in `find /data/log/ -type f` do du -sh $i >> $logfile done fi 3、检测网卡流量,并按规定格式记录在日志中#!/bin/bash ####################################################### #检测网卡流量,并按规定格式记录在日志中#规定一分钟记录一次 #日志格式如下所示: #2019-08-12 20:40 #ens33 input: 1234bps #ens33 output: 1235bps ######################################################3 while : do #设置语言为英文,保障输出结果是英文,否则会出现bug LANG=en logfile=/tmp/`date +%d`.log #将下面执行的命令结果输出重定向到logfile日志中 exec >> $logfile date +"%F %H:%M" #sar命令统计的流量单位为kb/s,日志格式为bps,因此要*1000*8 sar -n DEV 1 59|grep Average|grep ens33|awk '{print $2,"\t","input:","\t",$5*1000*8,"bps","\n",$2,"\t","output:","\t",$6*1000*8,"bps"}' echo "####################" #因为执行sar命令需要59秒,因此不需要sleep done 4、计算文档每行出现的数字个数,并计算整个文档的数字总数#!/bin/bash ######################################################### #计算文档每行出现的数字个数,并计算整个文档的数字总数 ######################################################## #使用awk只输出文档行数(截取第一段) n=`wc -l a.txt|awk '{print $1}'` sum=0 #文档中每一行可能存在空格,因此不能直接用文档内容进行遍历 for i in `seq 1 $n`do #输出的行用变量表示时,需要用双引号 line=`sed -n "$i"p a.txt`#wc -L选项,统计最长行的长度 n_n=`echo $line|sed s'/[^0-9]//'g|wc -L` echo $n_nsum=$[$sum+$n_n] done echo "sum:$sum" 杀死所有脚本#!/bin/bash ################################################################ #有一些脚本加入到了cron之中,存在脚本尚未运行完毕又有新任务需要执行的情况, #导致系统负载升高,因此可通过编写脚本,筛选出影响负载的进程一次性全部杀死。 ################################################################ ps aux|grep 指定进程名|grep -v grep|awk '{print $2}'|xargs kill -9 5、从 FTP 服务器下载文件#!/bin/bash if [ $# -ne 1 ]; then echo "Usage: $0 filename" fi dir=$(dirname $1) file=$(basename $1) ftp -n -v << EOF # -n 自动登录 open 192.168.1.10 # ftp服务器 user admin password binary # 设置ftp传输模式为二进制,避免MD5值不同或.tar.gz压缩包格式错误 cd $dir get "$file" EOF 6、连续输入5个100以内的数字,统计和、最小和最大#!/bin/bash COUNT=1 SUM=0 MIN=0 MAX=100 while [ $COUNT -le 5 ]; do read -p "请输入1-10个整数:" INT if [[ ! $INT =~ ^[0-9]+$ ]]; then echo "输入必须是整数!" exit 1 elif [[ $INT -gt 100 ]]; then echo "输入必须是100以内!" exit 1 fi SUM=$(($SUM+$INT)) [ $MIN -lt $INT ] && MIN=$INT [ $MAX -gt $INT ] && MAX=$INT let COUNT++ done echo "SUM: $SUM" echo "MIN: $MIN" echo "MAX: $MAX 用户猜数字#!/bin/bash # 脚本生成一个 100 以内的随机数,提示用户猜数字,根据用户的输入,提示用户猜对了, # 猜小了或猜大了,直至用户猜对脚本结束。 # RANDOM 为系统自带的系统变量,值为 0‐32767的随机数 # 使用取余算法将随机数变为 1‐100 的随机数num=$[RANDOM%100+1]echo "$num" # 使用 read 提示用户猜数字 # 使用 if 判断用户猜数字的大小关系:‐eq(等于),‐ne(不等于),‐gt(大于),‐ge(大于等于), # ‐lt(小于),‐le(小于等于) while : do read -p "计算机生成了一个 1‐100 的随机数,你猜: " cai if [ $cai -eq $num ] then echo "恭喜,猜对了" exit elif [ $cai -gt $num ] then echo "Oops,猜大了" else echo "Oops,猜小了" fi done 7、监测 Nginx 访问日志 502 情况,并做相应动作假设服务器环境为 lnmp,近期访问经常出现 502 现象,且 502 错误在重启 php-fpm 服务后消失,因此需要编写监控脚本,一旦出现 502,则自动重启 php-fpm 服务。#场景: #1.访问日志文件的路径:/data/log/access.log #2.脚本死循环,每10秒检测一次,10秒的日志条数为300条,出现502的比例不低于10%(30条)则需要重启php-fpm服务 #3.重启命令为:/etc/init.d/php-fpm restart #!/bin/bash ########################################################### #监测Nginx访问日志502情况,并做相应动作 ########################################################### log=/data/log/access.log N=30 #设定阈值 while :do #查看访问日志的最新300条,并统计502的次数 err=`tail -n 300 $log |grep -c '502" '` if [ $err -ge $N ] then /etc/init.d/php-fpm restart 2> /dev/null #设定60s延迟防止脚本bug导致无限重启php-fpm服务 sleep 60 fi sleep 10 done 8、将结果分别赋值给变量应用场景:希望将执行结果或者位置参数赋值给变量,以便后续使用。方法1:for i in $(echo "4 5 6"); do eval a$i=$idone echo $a4 $a5 $a6 方法2:将位置参数192.168.1.1{1,2}拆分为到每个变量num=0 for i in $(eval echo $*);do #eval将{1,2}分解为1 2 let num+=1 eval node${num}="$i" done echo $node1 $node2 $node3 # bash a.sh 192.168.1.1{1,2} 192.168.1.11 192.168.1.12 方法3:arr=(4 5 6) INDEX1=$(echo ${arr[0]}) INDEX2=$(echo ${arr[1]}) INDEX3=$(echo ${arr[2]}) 9、批量修改文件名示例:# touch article_{1..3}.html # lsarticle_1.html article_2.html article_3.html 目的:把article改为bbs 方法1:for file in $(ls *html); do mv $file bbs_${file#*_} # mv $file $(echo $file |sed -r 's/.*(_.*)/bbs\1/') # mv $file $(echo $file |echo bbs_$(cut -d_ -f2) 方法2:for file in $(find . -maxdepth 1 -name "*html"); do mv $file bbs_${file#*_}done 方法3:# rename article bbs *.html 把一个文档前五行中包含字母的行删掉,同时删除6到10行包含的所有字母 1)准备测试文件,文件名为2.txt 第1行1234567不包含字母 第2行56789BBBBBB 第3行67890CCCCCCCC 第4行78asdfDDDDDDDDD 第5行123456EEEEEEEE 第6行1234567ASDF 第7行56789ASDF 第8行67890ASDF 第9行78asdfADSF 第10行123456AAAA 第11行67890ASDF 第12行78asdfADSF 第13行123456AAAA 2)脚本如下:#!/bin/bash ############################################################### 把一个文档前五行中包含字母的行删掉,同时删除6到10行包含的所有字母 ############################################################## sed -n '1,5'p 2.txt |sed '/[a-zA-Z]/'d sed -n '6,10'p 2.txt |sed s'/[a-zA-Z]//'g sed -n '11,$'p 2.txt #最终结果只是在屏幕上打印结果,如果想直接更改文件,可将输出结果写入临时文件中,再替换2.txt或者使用-i选项 10、统计当前目录中以.html结尾的文件总大for size in $(ls -l *.html |awk '{print $5}'); do sum=$(($sum+$size)) done echo $sum 11、扫描主机端口状态#!/bin/bash HOST=$1 PORT="22 25 80 8080" for PORT in $PORT; do if echo &>/dev/null > /dev/tcp/$HOST/$PORT; then echo "$PORT open" else echo "$PORT close" fi done 用 shell 打印示例语句中字母数小于6的单词 #示例语句: #Bash also interprets a number of multi-character options. #!/bin/bash ############################################################## #shell打印示例语句中字母数小于6的单词 ############################################################## for s in Bash also interprets a number of multi-character options. do n=`echo $s|wc -c` if [ $n -lt 6 ] then echo $s fi done 12、输入数字运行相应命令#!/bin/bash ############################################################## #输入数字运行相应命令 ############################################################## echo "*cmd menu* 1-date 2-ls 3-who 4-pwd 0-exit " while : do #捕获用户键入值 read -p "please input number :" n n1=`echo $n|sed s'/[0-9]//'g` #空输入检测 if [ -z "$n" ] then continue fi #非数字输入检测 if [ -n "$n1" ] then exit 0 fi break done case $n in 1) date ;; 2) ls ;; 3) who ;; 4) pwd ;; 0) break ;; #输入数字非1-4的提示 *) echo "please input number is [1-4]" esac 13、Expect 实现 SSH 免交互执行命令Expect是一个自动交互式应用程序的工具,如telnet,ftp,passwd等。需先安装expect软件包。方法1:EOF标准输出作为expect标准输入#!/bin/bash USER=root PASS=123.com IP=192.168.1.120 expect << EOFset timeout 30spawn ssh $USER@$IP expect { "(yes/no)" {send "yes\r"; exp_continue} "password:" {send "$PASS\r"} } expect "$USER@*" {send "$1\r"} expect "$USER@*" {send "exit\r"} expect eof EOF 方法2:#!/bin/bash USER=root PASS=123.com IP=192.168.1.120 expect -c " spawn ssh $USER@$IP expect { \"(yes/no)\" {send \"yes\r\"; exp_continue} \"password:\" {send \"$PASS\r\"; exp_continue} \"$USER@*\" {send \"df -h\r exit\r\"; exp_continue} }" 方法3:将expect脚本独立出来登录脚本: # cat login.exp #!/usr/bin/expect set ip [lindex $argv 0] set user [lindex $argv 1] set passwd [lindex $argv 2] set cmd [lindex $argv 3] if { $argc != 4 } { puts "Usage: expect login.exp ip user passwd" exit 1 } set timeout 30 spawn ssh $user@$ip expect { "(yes/no)" {send "yes\r"; exp_continue} "password:" {send "$passwd\r"} } expect "$user@*" {send "$cmd\r"} expect "$user@*" {send "exit\r"} expect eof 执行命令脚本:写个循环可以批量操作多台服务器#!/bin/bash HOST_INFO=user_info.txt for ip in $(awk '{print $1}' $HOST_INFO) do user=$(awk -v I="$ip" 'I==$1{print $2}' $HOST_INFO) pass=$(awk -v I="$ip" 'I==$1{print $3}' $HOST_INFO) expect login.exp $ip $user $pass $1 done Linux主机SSH连接信息: # cat user_info.txt 192.168.1.120 root 123456 创建10个用户,并分别设置密码,密码要求10位且包含大小写字母以及数字,最后需要把每个用户的密码存在指定文件中 #!/bin/bash ############################################################## #创建10个用户,并分别设置密码,密码要求10位且包含大小写字母以及数字 #最后需要把每个用户的密码存在指定文件中#前提条件:安装mkpasswd命令 ############################################################## #生成10个用户的序列(00-09) for u in `seq -w 0 09`do #创建用户 useradd user_$u #生成密码 p=`mkpasswd -s 0 -l 10` #从标准输入中读取密码进行修改(不安全) echo $p|passwd --stdin user_$u #常规修改密码 echo -e "$p\n$p"|passwd user_$u #将创建的用户及对应的密码记录到日志文件中 echo "user_$u $p" >> /tmp/userpassworddone 14、监控 httpd 的进程数,根据监控情况做相应处理#!/bin/bash ############################################################################################################################### #需求: #1.每隔10s监控httpd的进程数,若进程数大于等于500,则自动重启Apache服务,并检测服务是否重启成功 #2.若未成功则需要再次启动,若重启5次依旧没有成功,则向管理员发送告警邮件,并退出检测 #3.如果启动成功,则等待1分钟后再次检测httpd进程数,若进程数正常,则恢复正常检测(10s一次),否则放弃重启并向管理员发送告警邮件,并退出检测 ############################################################################################################################### #计数器函数 check_service() { j=0 for i in `seq 1 5` do #重启Apache的命令 /usr/local/apache2/bin/apachectl restart 2> /var/log/httpderr.log #判断服务是否重启成功 if [ $? -eq 0 ] then break else j=$[$j+1] fi #判断服务是否已尝试重启5次 if [ $j -eq 5 ] then mail.py exit fi done }while :do n=`pgrep -l httpd|wc -l` #判断httpd服务进程数是否超过500 if [ $n -gt 500 ] then /usr/local/apache2/bin/apachectl restart if [ $? -ne 0 ] then check_service else sleep 60 n2=`pgrep -l httpd|wc -l` #判断重启后是否依旧超过500 if [ $n2 -gt 500 ] then mail.py exit fi fi fi #每隔10s检测一次 sleep 10 done 15、批量修改服务器用户密码Linux主机SSH连接信息:旧密码# cat old_pass.txt 192.168.18.217 root 123456 22 192.168.18.218 root 123456 22 内容格式:IP User Password Port SSH远程修改密码脚本:新密码随机生成 https://www.linuxprobe.com/books #!/bin/bash OLD_INFO=old_pass.txt NEW_INFO=new_pass.txt for IP in $(awk '/^[^#]/{print $1}' $OLD_INFO); do USER=$(awk -v I=$IP 'I==$1{print $2}' $OLD_INFO) PASS=$(awk -v I=$IP 'I==$1{print $3}' $OLD_INFO) PORT=$(awk -v I=$IP 'I==$1{print $4}' $OLD_INFO) NEW_PASS=$(mkpasswd -l 8) # 随机密码 echo "$IP $USER $NEW_PASS $PORT" >> $NEW_INFO expect -c " spawn ssh -p$PORT $USER@$IP set timeout 2 expect { \"(yes/no)\" {send \"yes\r\";exp_continue} \"password:\" {send \"$PASS\r\";exp_continue} \"$USER@*\" {send \"echo \'$NEW_PASS\' |passwd --stdin $USER\r exit\r\";exp_continue} }" done 生成新密码文件: # cat new_pass.txt 192.168.18.217 root n8wX3mU% 22 192.168.18.218 root c87;ZnnL 22 16、iptables 自动屏蔽访问网站频繁的IP场景:恶意访问,安全防范1)屏蔽每分钟访问超过200的IP方法1:根据访问日志(Nginx为例)#!/bin/bash DATE=$(date +%d/%b/%Y:%H:%M) ABNORMAL_IP=$(tail -n5000 access.log |grep $DATE |awk '{a[$1]++}END{for(i in a)if(a[i]>100)print i}') #先tail防止文件过大,读取慢,数字可调整每分钟最大的访问量。awk不能直接过滤日志,因为包含特殊字符。 for IP in $ABNORMAL_IP; do if [ $(iptables -vnL |grep -c "$IP") -eq 0 ]; then iptables -I INPUT -s $IP -j DROP fi done 方法2:通过TCP建立的连接#!/bin/bash ABNORMAL_IP=$(netstat -an |awk '$4~/:80$/ && $6~/ESTABLISHED/{gsub(/:[0-9]+/,"",$5);{a[$5]++}}END{for(i in a)if(a[i]>100)print i}') #gsub是将第五列(客户端IP)的冒号和端口去掉 for IP in $ABNORMAL_IP; do if [ $(iptables -vnL |grep -c "$IP") -eq 0 ]; then iptables -I INPUT -s $IP -j DROP fi done 2)屏蔽每分钟SSH尝试登录超过10次的IP方法1:通过lastb获取登录状态:#!/bin/bash DATE=$(date +"%a %b %e %H:%M") #星期月天时分 %e单数字时显示7,而%d显示07 ABNORMAL_IP=$(lastb |grep "$DATE" |awk '{a[$3]++}END{for(i in a)if(a[i]>10)print i}')for IP in $ABNORMAL_IP; do if [ $(iptables -vnL |grep -c "$IP") -eq 0 ]; then iptables -I INPUT -s $IP -j DROP fi done 方法2:通过日志获取登录状态#!/bin/bash DATE=$(date +"%b %d %H") ABNORMAL_IP="$(tail -n10000 /var/log/auth.log |grep "$DATE" |awk '/Failed/{a[$(NF-3)]++}END{for(i in a)if(a[i]>5)print i}')" for IP in $ABNORMAL_IP; do if [ $(iptables -vnL |grep -c "$IP") -eq 0 ]; then iptables -A INPUT -s $IP -j DROP echo "$(date +"%F %T") - iptables -A INPUT -s $IP -j DROP" >>~/ssh-login-limit.log fi done 17、根据web访问日志,封禁请求量异常的IP,如IP在半小时后恢复正常,则解除封禁#!/bin/bash #################################################################################### #根据web访问日志,封禁请求量异常的IP,如IP在半小时后恢复正常,则解除封禁 #################################################################################### logfile=/data/log/access.log #显示一分钟前的小时和分钟 d1=`date -d "-1 minute" +%H%M` d2=`date +%M` ipt=/sbin/iptables ips=/tmp/ips.txt block() { #将一分钟前的日志全部过滤出来并提取IP以及统计访问次数 grep '$d1:' $logfile|awk '{print $1}'|sort -n|uniq -c|sort -n > $ips #利用for循环将次数超过100的IP依次遍历出来并予以封禁 for i in `awk '$1>100 {print $2}' $ips` do $ipt -I INPUT -p tcp --dport 80 -s $i -j REJECT echo "`date +%F-%T` $i" >> /tmp/badip.log done } unblock() { #将封禁后所产生的pkts数量小于10的IP依次遍历予以解封 for a in `$ipt -nvL INPUT --line-numbers |grep '0.0.0.0/0'|awk '$2<10 {print $1}'|sort -nr` do $ipt -D INPUT $a done $ipt -Z } #当时间在00分以及30分时执行解封函数 if [ $d2 -eq "00" ] || [ $d2 -eq "30" ] then #要先解再封,因为刚刚封禁时产生的pkts数量很少 unblock block else block fi 18、判断用户输入的是否为IP地址方法1:#!/bin/bash function check_ip(){ IP=$1 VALID_CHECK=$(echo $IP|awk -F. '$1< =255&&$2<=255&&$3<=255&&$4<=255{print "yes"}') if echo $IP|grep -E "^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$">/dev/null; then if [ $VALID_CHECK == "yes" ]; then echo "$IP available." else echo "$IP not available!" fi else echo "Format error!" fi } check_ip 192.168.1.1 check_ip 256.1.1.1 方法2:#!/bin/bash function check_ip(){ IP=$1 if [[ $IP =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then FIELD1=$(echo $IP|cut -d. -f1) FIELD2=$(echo $IP|cut -d. -f2) FIELD3=$(echo $IP|cut -d. -f3) FIELD4=$(echo $IP|cut -d. -f4) if [ $FIELD1 -le 255 -a $FIELD2 -le 255 -a $FIELD3 -le 255 -a $FIELD4 -le 255 ]; then echo "$IP available." else echo "$IP not available!" fi else echo "Format error!" fi } check_ip 192.168.1.1 check_ip 256.1.1.1 增加版:加个死循环,如果IP可用就退出,不可用提示继续输入,并使用awk判断。#!/bin/bash function check_ip(){ local IP=$1 VALID_CHECK=$(echo $IP|awk -F. '$1< =255&&$2<=255&&$3<=255&&$4<=255{print "yes"}') if echo $IP|grep -E "^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$" >/dev/null; then if [ $VALID_CHECK == "yes" ]; then return 0 else echo "$IP not available!" return 1 fi else echo "Format error! Please input again." return 1 fi } while true; do read -p "Please enter IP: " IP check_ip $IP [ $? -eq 0 ] && break || continue done 到此结束,谢谢阅读!
2023年07月20日
17 阅读
0 评论
0 点赞
2023-06-29
群晖 DMS7.0 Video Station 支持 DTS 和 eac3 解决方案
Video Station 一直是我必装并且使用频繁的套件。但一直有个问题比较困扰,如果下载的是高清视频,经常会提示不支持当前所选音频的文件格式,因此无法播放视频。请尝试其它音轨。 具体原因我不过多赘述,在网上找了一些方案基本都是搬运,所以我翻阅了很多资料,经过尝试之后成功解决。在这里把过程记录下来,各位如果有相同问题的可以用来参考。下面开始操作。首先安装社区版FFMPEG社区地址:http://packages.synocommunity.com套件中心 > 社群 > ffmpeg开启SSH可设置自定义端口或使用默认端口使用终端连接群晖依次输入以下命令:# 切换到root权限,回车后输入管理员密码即可 sudo -i # 保存 Video Station 使用的 ffmpeg mv -n /var/packages/VideoStation/target/bin/ffmpeg /var/packages/VideoStation/target/bin/ffmpeg.orig # 注入脚本 wget -O - https://gist.githubusercontent.com/BenjaminPoncet/bbef9edc1d0800528813e75c1669e57e/raw/ffmpeg-wrapper > /var/packages/VideoStation/target/bin/ffmpeg # 更改脚本的所有权和模式 chown root:VideoStation /var/packages/VideoStation/target/bin/ffmpeg chmod 750 /var/packages/VideoStation/target/bin/ffmpeg chmod u+s /var/packages/VideoStation/target/bin/ffmpeg # 保存 Video Station 的 libsynovte.so cp -n /var/packages/VideoStation/target/lib/libsynovte.so /var/packages/VideoStation/target/lib/libsynovte.so.orig chown VideoStation:VideoStation /var/packages/VideoStation/target/lib/libsynovte.so.orig # 使libsynovte.so 支持 DTS, EAC3, TrueHD sed -i -e 's/eac3/3cae/' -e 's/dts/std/' -e 's/truehd/dheurt/' /var/packages/VideoStation/target/lib/libsynovte.so替换群晖使用的 FFmpeg命令 调用的相关文件(注意DMS6.0和DMS7.0不同):DMS6.0mv /var/packages/CodecPack/target/bin/ffmpeg33 /var/packages/CodecPack/target/bin/ffmpeg33.orig cp /var/packages/VideoStation/target/bin/ffmpeg /var/packages/CodecPack/target/bin/ffmpeg33DMS7.0mv /var/packages/CodecPack/target/bin/ffmpeg41 /var/packages/CodecPack/target/bin/ffmpeg41.orig cp /var/packages/VideoStation/target/bin/ffmpeg /var/packages/CodecPack/target/bin/ffmpeg41重启Video Station套件通过套件中心进行Video Station的重启后续的更新更新只需要执行以下命令即可:wget -O - https://gist.githubusercontent.com/BenjaminPoncet/bbef9edc1d0800528813e75c1669e57e/raw/ffmpeg-wrapper > /var/packages/VideoStation/target/bin/ffmpeg还原与卸载如果出现了问题,或者不想用了。执行以下命令即可还原:# 还原 Video Station 官方使用的 ffmpeg 与 libsynovte.so mv -f /var/packages/VideoStation/target/bin/ffmpeg.orig /var/packages/VideoStation/target/bin/ffmpeg mv -f /var/packages/VideoStation/target/lib/libsynovte.so.orig /var/packages/VideoStation/target/lib/libsynovte.so mv -f /var/packages/CodecPack/target/bin/ffmpeg41.orig /var/packages/CodecPack/target/bin/ffmpeg41当然,你也可以在套件中心卸载重装 Video Station 套件,来达到还原的效果。操作完之后,一切正常,Synology Photos也都正常有缩略图和播放。又能愉快的通过Video Station套件看片了。
2023年06月29日
41 阅读
0 评论
0 点赞
1
2
3
4
...
6