在
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发送邮件脚本,进一步实现服务器信息的发送。