在
SolusVM 是一个虚拟服务器管理软件,允许用户和管理员通过一个简单的界面管理虚拟化技术,包括 OpenVZ、Xen、和 KVM。SolusVM 主要被网站托管服务提供商用于简化虚拟私人服务器(VPS)的管理和部署,如racknerd。
通过调用API我们可以快速获取VPS的一些基础信息,如带宽使用数据,内存占用情况和存储占用情况。官方介绍

在API界面生成API Key 和 API Hash

通过curl调用API接口,注意替换你的VPS提供商使用的面板host名和刚生成的API KEY、API HASH
curl -s https://nerdvm.racknerd.com/api/client/command.php?key=“你的API KEY”&hash=“你的API HASH”&action=info&ipaddr=true&hdd=true&mem=true&bw=true
ipaddr=true、hdd=true、mem=true、bw=true,参数可选
重启命令:
curl -s https://nerdvm.racknerd.com/api/client/command.php?key=“你的API KEY”&hash=“你的API HASH”&action=reboot
https://www.yunloc.com/3010.html 提供了一个php代码方便通过浏览器查询使用情况,你也可以通过脚本定时地查询api并通过邮件的形式发送到你的邮箱。脚本仅供参考,需要根据你的服务器数量进行修改
#!/bin/bash
source /root/mail.sh
# Configuration for multiple VPS providers
API_URLS=("https://nerdvm.racknerd.com/api/client/command.php") #如有多个url用空格隔开
KEYS=("0SMI-O09O") #如有多个用空格隔开
HASHES=("63c3eba316") #如有多个用空格隔开
convert_to_gb_with_labels() {
local raw_data=(${1//,/ })
local last_index=${#raw_data[@]}-1
local percentage="${raw_data[$last_index]}" # Save the last element as percentage
unset raw_data[$last_index] # Remove the percentage from the data array
local gb_values=()
local labels=("Total" "Used" "Free")
local counter=0
for bytes in "${raw_data[@]}"; do
local gb=$(bc <<< "scale=3; $bytes/1073741824")
gb_values+=("${labels[counter]}: ${gb} GB")
((counter++))
done
# Combine the GB values with the percentage
echo "${gb_values[*]}, Percent Used: ${percentage}%"
}
CURRENT_DATE=$(date +"%Y-%m-%d %H:%M:%S")
CONTENT="Update at "$CURRENT_DATE"\n\n"
# 遍历查询API,如果有多个服务器需要根据你的实际情况进行修改
for i in "${!KEYS[@]}"; do
# Fetching data from each specific SolusVM API URL
RESPONSE=$(curl -s "${API_URLS[i]}?key=${KEYS[i]}&hash=${HASHES[i]}&action=info&ipaddr=true&hdd=true&mem=true&bw=true")
# Format the data
IPADDR=$(echo $RESPONSE | grep -oP '(?<=<ipaddr>).*?(?=</ipaddr>)')
HDD_RAW=$(echo $RESPONSE | grep -oP '(?<=<hdd>).*?(?=</hdd>)')
MEM_RAW=$(echo $RESPONSE | grep -oP '(?<=<mem>).*?(?=</mem>)')
BW_RAW=$(echo $RESPONSE | grep -oP '(?<=<bw>).*?(?=</bw>)')
HOSTNAME=$(echo $RESPONSE | grep -oP '(?<=<hostname>).*?(?=</hostname>)')
HDD=$(convert_to_gb_with_labels "$HDD_RAW")
MEM=$(convert_to_gb_with_labels "$MEM_RAW")
BW=$(convert_to_gb_with_labels "$BW_RAW")
# Append data to email content
CONTENT+="VPS $(($i + 1)) - $HOSTNAME\nIP Address: $IPADDR\nHDD Usage: $HDD\nMemory Usage: $MEM\nBandwidth Usage: $BW\n\n"
done
subject="VPS Status Update"
sender_name="Kabe's VPS"
recipients=("[email protected]" "[email protected]") #如有多个收件人可以用空格隔开
mail_to "$sender_name" "$subject" "$CONTENT" "${recipients[*]}"
通过调用curl发送邮件脚本,进一步实现服务器信息的发送。