前言
我们购买的 VPS 大部分都是有流量限制的,怎么简单又方便的查看当前使用的流量呢?以往我们不是登录 VPS、solusVM面板管理后台,就是安装探针查看。但觉得登录后台太麻烦了,探针呢只是统计网卡的流量,不是很准确。这里久介绍一款 LOC 大神的 PHP 版的基于 solusVM 面板 API 调用的VPS 流量统计页面。
PHP 代码
把下面的代码另存为status.php
<!DOCTYPE html>
<head>
<title>服务器流量状态</title>
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/5.3.0/css/bootstrap.min.css" rel="stylesheet">
<style>
.table {
width: 100%;
}
.table th,
.table td {
vertical-align: middle;
}
.progress {
height: 20px;
}
</style>
</head>
<body>
<div style="width: 90%; max-width: 800px; margin: 0 auto;">
<h1>服务器流量状态</h1>
<hr />
<?php
$lists = array(
array("XXXXX-XXXXX-XXXXX", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "https://cp.greencloudvps.com/", "LA-2222"),
array("XXXXX-XXXXX-XXXXX", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "https://cp.greencloudvps.com/", "JP-2222"),
array("XXXXX-XXXXX-XXXXX", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "https://nerdvm.racknerd.com/", "Racknerd"),
array("XXXXX-XXXXX-XXXXX", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "https://manage.dedicontrol.com/", "DDP")
// 多个可以拷贝上面,最后一个不加逗号,其他加即可
);
$result = array();
foreach ($lists as $key) {
$result[] = post($key[0], $key[1], $key[2], $key[3]);
}
function humanFileSize($size, $unit = "")
{
if ((!$unit && $size >= 1 << 30) || $unit == "GB")
return number_format($size / (1 << 30), 2) . " GB";
if ((!$unit && $size >= 1 << 20) || $unit == "MB")
return number_format($size / (1 << 20), 2) . " MB";
if ((!$unit && $size >= 1 << 10) || $unit == "KB")
return number_format($size / (1 << 10), 2) . " KB";
return number_format($size) . " bytes";
}
function post($keys, $hashs, $naserurls, $beizhu)
{
$postfields["key"] = $keys;
$postfields["hash"] = $hashs;
$postfields["action"] = "info";
$masterurl = $naserurls;
$postfields["status"] = "true";
$postfields["hdd"] = "true";
$postfields["mem"] = "true";
$postfields["bw"] = "true";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "{$masterurl}/api/client/command.php");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Expect: "));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
// Execute the request
$data = curl_exec($ch);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($code != 200) {
$return['error'] = 1;
if ($code == 405) {
$return['message'] = "Incorrect API credentials.";
return $return;
}
$return['message'] = "Invalid status code.";
return $return;
}
// Close the Curl handle
curl_close($ch);
if (!$data) {
$return['error'] = 1;
$return['message'] = "Error connecting to API.";
return $return;
}
// Extract the data
preg_match_all('/<(.*?)>([^<]+)<\/\\1>/i', $data, $match);
$result = array();
$result['bz'] = $beizhu;
foreach ($match[1] as $x => $y) {
$result[$y] = $match[2][$x];
}
//获取出错
if ($result['status'] == "error") {
$result['error'] = 1;
$result['message'] = $result['statusmsg'];
return $result;
}
//获取正常
$result['error'] = 0;
$result['hdd'] = explode(",", $result['hdd']);
$result['mem'] = explode(",", $result['mem']);
$result['bw'] = explode(",", $result['bw']);
return $result;
}
?>
<table class="table table-striped">
<thead>
<tr>
<th>备注</th>
<th>带宽</th>
</tr>
</thead>
<tbody>
<?php foreach ($result as $key) { ?>
<tr>
<td><?php echo $key['bz']; ?></td>
<td>
<div class="progress">
<div class="progress-bar <?php echo ($key['bw'][3] >= 90) ? 'bg-danger' : (($key['bw'][3] >= 75) ? 'bg-warning' : 'bg-success'); ?>" role="progressbar" style="width: <?php echo $key['bw'][3]; ?>%;" aria-valuenow="<?php echo $key['bw'][3]; ?>" aria-valuemin="0" aria-valuemax="100">
<?php echo $key['bw'][3]; ?>%
</div>
</div>
<small>已用 <?php echo humanFileSize($key['bw'][1]); ?> / 总量 <?php echo humanFileSize($key['bw'][0]); ?></small>
</td>
</tr>
<?php } ?>
</tbody>
</table>
<a class="btn btn-primary" href="https://status.yunloc.com" role="button">返回</a>
</div>
</body>
</html>
进入面板获取 API
结语
适用于 RN、greencloud、vir、ddp 等使用 solusVM 控制面板商家;
程序直接调用的 solusVM 面板的 API,获取代码参考网上现存的,用 GPT 美化了下;
这样就方便不用进每个小鸡面板分别查看了。
© 本站文章随意转载,但请注明出处!
>> 如果您觉得本站文章对您有所帮助,购买 VPS 时候请走本站AFF链接!
>> 某些文章具有时效性,若内容有错误或已失效,欢迎在下方评论区留言向我们反馈.
>> 所有文章均基于分享的原则,所有言论均个人观点,请注意全部都不是推荐,是分享!分享!分享!
>> 所有文章均基于分享的原则,所有言论均个人观点,请注意全部都不是推荐,是分享!分享!分享!
THE END
暂无评论内容