本文发布于 1766 天前,其中的信息可能已经有所发展或是发生改变。
前言
前些天我买了一台Virmach的大盘鸡,1核512MB内存,500G硬盘,4T流量。这个配置做NextCloud还行,但LAMP环境比较消耗内存,而且Virmach的资源监控很严格,VPS不能在5分钟以上的时间内达到95-100%的使用率,在2小时内的平均使用率不能超过50%,一旦违反就会直接关机,让我经常看到NextCloud的“同步失败”提示。所以我要写个脚本来监控VPS,并且在VPS下线时自动开机。
实现
监控
使用nmap,扫描80端口是否开放,未开放即为服务器下线。
rt=`nmap $ip -p 80 | grep "open" | wc -l` if [ $rt == 1 ]; then # Do something... fi
启动服务器
SolusVM提供了API,所以我们用curl发送GET请求调用API开机就好了。
API地址http(s)://SolusVM面板地址/api/client/command.php?key=你的API Key&hash=你的API HASH&action=操作
curl $boot_url; # boot_url是API开机地址。
完整脚本
#!/bin/bash ip="你服务器IP" svm_url="你服务器SolusVM面板地址" api_key="你的API Key" api_hash="你的API HASH" boot_url=""${svm_url}"/api/client/command.php?key="${api_key}"&hash="${api_hash}"&action=boot" while true; do rt=`nmap $ip -p 80 | grep "open" | wc -l` echo "Checked."; if [ $rt == 0 ]; then echo "Booting." curl $boot_url; if [ $? == 1 ]; then echo "Error:Cannot Boot Server"; exit; else echo "Successful booted server."; fi fi sleep 5; done
使用方法
生成API Key和API HASH
打开SolusVM,找到你的服务器,然后点击API-Generate。
记好API Key和API HASH。
修改脚本
把脚本里面的内容修改,填入服务器IP/SolusVM后台地址/API Key/API HASH,保存。
修复权限
chmod +x 脚本文件名
注册服务
新建/etc/systemd/system/服务名称.service
,在里面写入这些内容。
[Unit] Description=Monitor the status of the SolusVM panel-Based VPS and enable it when the server is offline. [Service] ExecStart=/bin/bash 脚本文件路径 [Install] WantedBy=multi-user.target
保存,执行以下命令载入服务。
systemctl daemon-reload systemctl enable 服务名 systemctl start 服务名
最后,你就可以享受它了!