同事请了产假,让我帮他盯一下几台windows服务器磁盘空间状况,盯了几天老是这样一个一个远程过去太麻烦楼干脆搞了个检查脚本,这个脚本可以实现将本机每天磁盘空间情况保存在本地并发送到指定的FTP空间里,方便统一查看。同时还可以自动删除7天以前的记录(时间可以自己设置)。
daily_disk_check.bat https://github.com/zpblog/daily-disk-check
@echo off :: set IPADDR=192.168.1.1 set FTPSVR=192.168.1.1 set FTPUSER=ftpuser set FTPPASSWORD=123456 :: timestamp YYYY-MM-DD_HH-MM-SS for /f "delims=" %%a in ('wmic OS Get localdatetime ^| find "."') do set dt=%%a set day=%dt:~0,8% set time=%dt:~8,6% ::echo %day%-%time% :: save dir set saveDir="C:\diskspace\logs" set RESULT=%saveDir%\%IPADDR%-%day%-%time%-diskspace.txt echo IP:%IPADDR% > %RESULT% echo PLATFORM:WINDOWS >> %RESULT% :: daily_disk_check.bat wmic logicaldisk Where DriveType="3" get caption,FreeSpace,size |find ":" >>%RESULT% :: delete file for 7 days ago forfiles /P %saveDir% /M "*diskspace.txt" /D -7 /C "cmd /C del /Q /F @file" echo open %FTPSVR% >upload.src echo user %FTPUSER% %FTPPASSWORD% >>upload.src echo lcd %saveDir% >>upload.src echo bin >>upload.src echo put %RESULT% >>upload.src echo bye >>upload.src ftp -n -s:upload.src del /Q /F upload.src
注:记得先建好日志保存文件夹"C:\diskspace\logs",还有就是建一个FTP服务器。
加个“计划任务”每天执行一下,就可以一览众山小喽~
后面有时间的话我准备在搞个数据整合,直接打开一张表格或者一个网页就能看到所有服务器磁盘空间状态。
续:
今天抽空尝试用php写了个整合页面,拼拼的代码,大家凑合看看,效果还不错。
diskspace.php
<form method="POST" action=""> select daytime: <select name="day"> <option value="<?php echo date("Ymd"); ?>"><?php echo date("Ymd"); ?></option> <option value="<?php echo date("Ymd",strtotime('-1 days')); ?>"><?php echo date("Ymd",strtotime('-1 days')); ?></option> <option value="<?php echo date("Ymd",strtotime('-2 days')); ?>"><?php echo date("Ymd",strtotime('-2 days')); ?></option> <option value="<?php echo date("Ymd",strtotime('-3 days')); ?>"><?php echo date("Ymd",strtotime('-3 days')); ?></option> <option value="<?php echo date("Ymd",strtotime('-4 days')); ?>"><?php echo date("Ymd",strtotime('-4 days')); ?></option> <option value="<?php echo date("Ymd",strtotime('-5 days')); ?>"><?php echo date("Ymd",strtotime('-5 days')); ?></option> <option value="<?php echo date("Ymd",strtotime('-6 days')); ?>"><?php echo date("Ymd",strtotime('-6 days')); ?></option> </select> <input value="submit" name="submit" type="submit"> </form> <?php if ($_POST['submit']){ $dateday = $_POST['day']; }else{ $dateday = date("Ymd"); } $list = array(); foreach(glob("diskspace_logs/*$dateday*.txt") as $f) { $list[basename($f,".txt")] = $f; } echo "<br/>"; echo "<table border='0'>"; foreach($list as $path){ $filename= $list[basename($path,".txt")]; $str=file_get_contents($filename); $arr=explode("\n",trim($str)); $i=0; echo "<tr>"; foreach($arr as $row){ $temp=preg_split('/[\s]+/', $row); echo "<td>"; if($i>1){ $FreeSpace= sprintf("%.2f", $temp[1]/1073741824); $Size= sprintf("%.2f", $temp[2]/1073741824); $syl=round((1-($FreeSpace/$Size))*100).'%'; if($FreeSpace <= "5"){ echo $temp[0]."--<strong style='background:red'>".$FreeSpace."</strong> --".$Size."--".$syl." "; }else{ echo $temp[0]."--".$FreeSpace."--".$Size."--".$syl." "; } }elseif($i==0){ echo $temp[0]." "; } $i++; echo "</td>"; } echo "</tr>"; } echo "</table>"; ?>
注:记得注意一下FTP过来的txt文件目录,还需要一个php环境。
当然大家可以直接把这些放在一个搭建好环境的服务器上,方便长期使用和访问,我嘛就临时代劳一下就直接用的整合的小软件在自己电脑上搭了个环境。
评论列表:
新闻头条
评论于2019-05-14 22:55:33
文章不错支持一下吧,非常喜欢 - 回复该评论
头条
评论于2019-09-11 02:12:09
文章不错支持一下吧 - 回复该评论
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。
相关文章
Windows11关不了机也休眠不了,竟然是手残点了转换动态盘导致的,格盘重装?2024-04-11
记一次CentOS大磁盘分区Parted2019-05-14