11111111

# -*- coding: utf-8 -*-
import re
import shlex
import subprocess
from threading import Timer

class ShellCommandExecutor:
    def __init__(self, timeout=30 * 60):
        self.timeout = timeout

    def execute_shell_command(self, shell_cmd):
        shell_cmd_list = shlex.split(shell_cmd)
        proc = subprocess.Popen(shell_cmd_list, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
        timer = Timer(self.timeout, proc.kill)
        try:
            timer.start()
            stdout, stderr = proc.communicate()
            return (stdout + stderr).strip().decode('utf-8')
        finally:
            timer.cancel()

class SystemSpecificationChecker(ShellCommandExecutor):
    def check_cpu_cores(self):
        output = self.execute_shell_command("cat /proc/stat")
        cpu_cores = len(re.findall(r'^cpu\d+', output, re.MULTILINE))
        return cpu_cores == 4, cpu_cores, output

    def check_memory(self):
        output = self.execute_shell_command("free -m")
        total_memory = re.search(r'Mem:\s+(\d+)', output)
        if total_memory:
            total_memory = int(total_memory.group(1))
            return total_memory >= 8000, total_memory, output
        return False, 0, output

    def check_disk_space(self, path):
        output = self.execute_shell_command("df -h {}".format(path))
        disk_space = re.search(r'\s+(\d+)G\s+', output)
        if disk_space:
            disk_space = int(disk_space.group(1))
            return disk_space >= 20, disk_space, output
        return False, 0, output

    def check_agent_process(self):
        output = self.execute_shell_command("ps -ef|grep agent")
        return 'agent' in output, output

    def check_file_existence(self, file_path):
        output = self.execute_shell_command("ls {}".format(file_path))
        return 'No such file or directory' not in output, output

def main():
    checker = SystemSpecificationChecker()

    print("================================================================")
    cpu_result, cpu_cores, cpu_output = checker.check_cpu_cores()
    print("cat /proc/stat\t\t|\t{}".format(cpu_cores))
    print("-----------------------------------------------------------------")
    print("Command Execution Result:")
    print(cpu_output)
    print("================================================================")

    memory_result, total_memory, memory_output = checker.check_memory()
    print("free -m\t\t\t|\t{}".format(total_memory))
    print("-----------------------------------------------------------------")
    print("Command Execution Result:")
    print(memory_output)
    print("================================================================")


    disk_cloud_result, disk_cloud_space, disk_cloud_output = checker.check_disk_space("/opt/cloud")
    print("df -h /opt/cloud\t\t|\t{}".format(disk_cloud_space))
    print("-----------------------------------------------------------------")
    print("Command Execution Result:")
    print(disk_cloud_output.encode('utf-8', errors='replace'))
    print("================================================================")


    disk_logs_result, disk_logs_space, disk_logs_output = checker.check_disk_space("/opt/cloud/logs")
    print("df -h /opt/cloud/logs\t|\t{}".format(disk_logs_space))
    print("-----------------------------------------------------------------")
    print("Command Execution Result:")
    print(disk_logs_output.encode('utf-8', errors='replace'))
    print("================================================================")


    agent_result, agent_output = checker.check_agent_process()
    print("ps -ef|grep agent\t|\t{}".format(agent_result))
    print("-----------------------------------------------------------------")
    print("Command Execution Result:")
    print(agent_output.encode('utf-8', errors='replace'))
    print("================================================================")


    file_existence_result, file_existence_output = checker.check_file_existence("/opte/pprint/1.txt")
    print("ls /opte/pprint/1.txt\t|\t{}".format(file_existence_result))
    print("-----------------------------------------------------------------")
    print("Command Execution Result:")
    print(file_existence_output.encode('utf-8', errors='replace'))
    print("================================================================")

    cpu_result, cpu_cores, cpu_output = checker.check_cpu_cores()
    print("  cat /proc/stat  \t|\tCPU cores count as 4: {}, \t|\tActual core count: {}".format(cpu_result, cpu_cores))

    memory_result, total_memory, memory_output = checker.check_memory()
    print("    free -m        \t|\tMemory size as 8G: {},  \t|\tActual memory size: {} MB".format(memory_result, total_memory))

    disk_cloud_result, disk_cloud_space, disk_cloud_output = checker.check_disk_space("/opt/cloud")
    print("    df -h /opt/cloud \t|\tDisk space as 20G: {}, \t|\tActual disk space: {} G".format(disk_cloud_result, disk_cloud_space))

    disk_logs_result, disk_logs_space, disk_logs_output = checker.check_disk_space("/opt/cloud/logs")
    print(" df -h /opt/cloud/logs\t|\tDisk space as 20G: {}, \t|\tActual disk space: {} G".format(disk_logs_result, disk_logs_space))

    agent_result, agent_output = checker.check_agent_process()
    print("   ps -ef|grep agent \t|\tAgent process normal: {}".format(agent_result))

    file_existence_result, file_existence_output = checker.check_file_existence("/opte/pprint/1.txt")
    print("ls /opte/pprint/1.txt \t|\t File existence: {}".format(file_existence_result))

if __name__ == "__main__":

    main()
在这里插入代码片
  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值