proxmox新版本使用了lxc容器,导致以前的vzlist命令无法使用,于是自己写了一个脚本来获取所有半虚拟化主机的信息状态...

#!/usr/bin/env python
#encoding:utf-8
# desc:用来描述各个主机信息

import os

#CTID      NPROC STATUS    IP_ADDR         HOSTNAME

configDir = '/etc/pve/lxc'

#获取所有的配置文件
def fileListFunc(filePathList):
    fileList = []
    for filePath in filePathList:
        for top, dirs, nondirs in os.walk(filePath):
            for item in nondirs:
                #fileList.append(os.path.join(top, item))
                fileList.append(item)
    return fileList

#根据配置文件获取ID号
def getAllID():
    idList = []
    for id in fileListFunc([configDir]):
        idList.append(id.split('.')[0])
    return sorted(idList)

#根据ID号获取主机状态
def getStat(id):
    statInfo = os.popen('lxc-info -n ' + str(id)).read()
    if 'RUNNING' in statInfo:
        return 'running'
    else:
        return 'stoping'

#根据ID号获取主机IP地址
def getIP(id):
    ip = '-'
    statInfo = os.popen('lxc-info -n ' + str(id)).read()
    for line in statInfo.split('\n'):
        if 'IP' in line:
            ip = line.split(':')[1].strip()
    return ip 

#根据ID号获取主机名
def getHostName(id):
    hostname = '-'
    statInfo = os.popen('cat /etc/pve/lxc/' + str(id) + '.conf').read()
    for line in statInfo.split('\n'):
        if line.startswith('hostname'):
            hostname = line.split(':')[1].strip()
    return hostname
    
def pnull(n,str):
    sn = len(str)
    pn = n - sn
    if pn <=0:
        pn = 1
    return ' ' * pn
    
def main():
    print 'CTID      STATUS    IP_ADDR         HOSTNAME'
    for id in getAllID():
        stat = getStat(id)
        ip = getIP(id)
        hostname = getHostName(id)
        print id + pnull(10,id) + stat + pnull(10,stat) + ip + pnull(16,ip) + hostname + pnull(10,hostname)

if __name__ == '__main__':
    main()

 

文件命令为vzlist

cat /usr/bin/vzlist

赋予执行权限,在任何地方都可以执行 

转载于:https://www.cnblogs.com/djoker/p/8459226.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值