×

SolusVM 是一个虚拟服务器管理软件,允许用户和管理员通过一个简单的界面管理虚拟化技术,包括 OpenVZ、Xen、和 KVM。SolusVM 主要被网站托管服务提供商用于简化虚拟私人服务器(VPS)的管理和部署,如racknerd

通过调用API我们可以快速获取VPS的一些基础信息,如带宽使用数据,内存占用情况和存储占用情况。官方介绍

solusVM 控制界面

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

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

相关文章

Spamhaus数据库

Spamhaus提供了基于DNS的方式查询I...

读出全部

增加wordpress上传大小限制

默认设置下wordpress上传大小限制为2...

读出全部

使用curl命令发送邮件

通过curl来发送简单邮件,并提供了一个脚本...

读出全部

nsupdate使用方法

我们可以使用nsupdate命令来更新域名记...

读出全部

搭建从服务器

如果你有多个服务器,你可以尝试为域名解析搭建...

读出全部