通过python查出服务器磁盘容量

#coding:utf-8
import os  
from collections import namedtuple  
 
disk_ntuple = namedtuple(‘partition‘,  ‘device mountpoint fstype‘)  
usage_ntuple = namedtuple(‘usage‘,  ‘total used free percent‘)  
#获取当前操作系统下所有磁盘  
def disk_partitions(all=False):  
    """Return all mountd partitions as a nameduple.
    If all == False return phyisical partitions only.
    """  
    phydevs = []  
    f = open("/proc/filesystems", "r")  
    for line in f:  
        if not line.startswith("nodev"):  
            phydevs.append(line.strip())  
 
    retlist = []  
    f = open(‘/etc/mtab‘, "r")  
    for line in f:  
        if not all and line.startswith(‘none‘):  
            continue  
        fields = line.split()  
        device = fields[0]  
        mountpoint = fields[1]  
        fstype = fields[2]  
        if not all and fstype not in phydevs:  
            continue  
        if device == ‘none‘:  
            device = ‘‘  
        ntuple = disk_ntuple(device, mountpoint, fstype)  
        retlist.append(ntuple)  
    return retlist  
#统计某磁盘使用情况,返回对象  
def disk_usage(path):  
    """Return disk usage associated with path."""  
    st = os.statvfs(path)  
    free = (st.f_bavail * st.f_frsize)  
    total = (st.f_blocks * st.f_frsize)  
    used = (st.f_blocks - st.f_bfree) * st.f_frsize  
    try:  
        percent = ret = (float(used) / total) * 100  
    except ZeroDivisionError:  
        percent = 0  
    # NB: the percentage is -5% than what shown by df due to  
    # reserved blocks that we are currently not considering:  
    # http://goo.gl/sWGbH  
    return usage_ntuple(total, used, free, round(percent, 1))
print disk_partitions()

def getPath():
    """
    获取磁盘的分区
    """
    disklist = []
    list = disk_partitions()
    for i in list:
    disklist.append(i[1])
    return disklist
#pathlist = getPath()
#print "path list is ....%s" % pathlist
#print disk_usage(‘/home‘)
def getDiskTotal():
    """
    获取磁盘总的大小
    """
    newpathlist = []
    pathlist = []
    pathlist = getPath()
    print "pathlist type is %s ,and the pathlist value is %s" % (type(pathlist),pathlist)
    pathlist.append("/dev/shm/")
    totalDiskList = []
#    print newpathlist
    sum = 0
    for path in pathlist:
        disktotal = disk_usage(path)[0] / 1073741824 + 1
        totalDiskList.append(disktotal)
    for count in totalDiskList:
        sum += count
    print sum

getDiskTotal()

时间: 2024-08-05 13:47:19

通过python查出服务器磁盘容量的相关文章

使用SNMP抓取远程服务器磁盘容量信息有误

公司服务器硬盘是44T,使用snmpwalk抓出来才2T,见下面红色字体 [email protected]:# snmpwalk -v 2c -c ********  .1.3.6.1.4.1.2021.9.1.6 iso.3.6.1.4.1.2021.9.1.6.1 = INTEGER: 226311584 iso.3.6.1.4.1.2021.9.1.6.2 = INTEGER: 0 iso.3.6.1.4.1.2021.9.1.6.3 = INTEGER: 0 iso.3.6.1.4.1

服务器磁盘扩展容量操作流程

公司一个文件下载服务器,用的阿里云服务器.之前由于用户少,在购买时磁盘容量为300G.后来邮件文件越来越多,不得不扩展磁盘容量. 分区情况,需要对 /data/download (/dev/xvdc) 分区进行扩展 root:/root>df -h Filesystem            Size  Used Avail Use% Mounted on /dev/hda1              20G   15G  3.9G  79% / tmpfs                 50

CENTOS 阿里云服务器磁盘扩容

我的系统是centos 6.5 32位,数据盘挂载在/www/web目录下,所以扩容的方法和阿里云官方的有所不同. **备注:如果磁盘已有分两个区,需要把两个区都删除,才能扩容成功(开始一直扩不成功,后面删除2分区后,扩容成功) **分区时,删除分区,需要马上新建,以免数据丢失 ====我还不知道,怎么重新分两个分区,扩容后只能分一个区..额...忘高手指导! 现将过程记录如下,以备以后使用,本人PHP猿人,LINUX小白.高手可以漂过 以下是扩容过程: 首先,做好快照(出现问题好恢复),在后台

通过SSIS监控远程服务器磁盘空间并发送邮件报警

本文直接参考了博客园软件人生的文章操作的,写在这里只为做个记录. 到公司这边先把两个报表服务器接收了. 为防止宕机,部署个磁盘警告的SSIS包. Step 1 建立两个变量来接收和写入磁盘容量 Step 2 创建 WMI和SMTP 连接管理器 Step 3 拖个WMI Data Reader Task,并进行配置 注意,几乎每个选项都要改 SELECT FreeSpace FROM Win32_LogicalDisk where DriveType= 3 and DeviceID='C:' St

使用python进行服务器监控

使用python进行服务器监控 Linux服务器中,一切皆为文件.也就是说服务器运行的各种信息,其实是可以从某些文件中查询得到: Linux系统中,有一个/proc的虚拟文件系统 Linux 系统为管理员提供了非常好的方法,使其可以在系统运行时更改内核,而不需要重新引导内核系统,这是通过/proc 虚拟文件系统实现的./proc 文件虚拟系统是一种内核和内核模块用来向进程(process)发送信息的机制(所以叫做“/proc”),这个伪文件系统允许与内核内部数据结构交互,获取有关进程的有用信息,

VMware Workstation 12 增加磁盘容量 Windows Server 2012 系统 扩展

1.安装虚拟机后,检查C盘容量大小,发现C盘现在的空间是59.9GB,如下图: 2.使用window+R键,出现运行窗口,输入'cmd'-->'cd C:\Program Files (x86)\VMware\VMware Workstation',回车键,进入该路径. 3.在命令提示符后输入"vmware-vdiskmanager",无任何参数,按回车键.可以看到该命令的所有参数说明. 4.参考说明,执行类似下面的命令:vmware-vdiskmanager -x 80Gb 参

VMware Workstation 12 增加磁盘容量 Windows Server 2012 系统

1.安装虚拟机后,检查C盘容量大小,发现C盘现在的空间是59.9GB,如下图: 2.使用window+R键,出现运行窗口,输入'cmd'-->'cd C:\Program Files (x86)\VMware\VMware Workstation',回车键,进入该路径. 3.在命令提示符后输入"vmware-vdiskmanager",无任何参数,按回车键.可以看到该命令的所有参数说明. 4.参考说明,执行类似下面的命令:vmware-vdiskmanager -x 80Gb 参

SQL Server 服务器磁盘测试之SQLIO篇(二)

上次放出了一篇文章,针对磁盘卷簇大小默认4KB和自定义64KB进行了测试,测试内容为随机和顺序读写,大小为8KB和64KB,有人觉得这并没有照顾到SQL Server所有的IO使用情景.这篇测试文章,我们就来尽可能模拟一下SQL Server IO的行为,全方位对簇大小4KB.8KB和64KB做一次验证,注意:本次我们增加了簇为8KB的大小. 重点说明:本测试使用的是两块SSD组成的RAID1 首先,我们先来分析SQL Server的IO行为,参考网址:Choosing what SQLIO t

C# 获取磁盘容量

原文:C# 获取磁盘容量 /// 获取指定驱动器的空间总大小(单位为B) /// </summary> /// <param name="str_HardDiskName">只需输入代表驱动器的字母即可 </param> /// <returns> </returns> public static long GetHardDiskSpace(string str_HardDiskName) { long totalSize=