python日常运维

好久不见. 提交于 2019-11-29 16:51:31
import psutilimport timefrom time import sleepimport datetimeimport osimport sysimport jsonimport requestsclass MessyServerHardware():    def __int__(self):        self.time_now = time.strftime("%Y-%m-%d %H:%M:%s",time.localtime(time.time()))        self.__serverStartTime = datetime.datetime.fromisoformat(psutil.boot_time()).strftime("%Y-%m-%d %H:%M:%S")    def cpu(self):        count = psutil.cpu_count(logical=False)   # 查看cpu物理个数        self._cpu = str(psutil.cpu_percent(interval=2, percpu=False)) + '%'# CPU的使用率    interval是获取2s内的cpu使用率波动        return 'CPU的使用率'+self._cpu    def memory(self):        self.total = str(round(psutil.virtual_memory().total/(1024.0 * 1024.0 *1024.0 ),2)) # 查看内存大小        self.free = str(round(psutil.virtual_memory().free / (1024.0 * 1024.0 *1024.0 ),2)) #剩余内存        self._memory = int(psutil.virtual_memory().total - psutil.virtual_memory().free) / float(psutil.virtual_memory().total)  # 物理内存使用率(DDR)        self.me = str(int(self._memory * 100)) + '%'        return 'total'+self.total,'free'+self.free,'物理内存使用率'+self.me    def user(self):        self.users_count = len(psutil.users())        # 当前登录用户名        self._users_list = ",".join([u.name for u in psutil.users()])  # 用户个数        return '用户个数'+str(self.users_count),'当前登录用户名'+str(self._users_list)    def bytes2symbols(self,bytes_value):        '''单位符号'''        symbols = ('K', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y')         # 每个单位对应的bytes数的字典,先定义为空        prefix = {}        for i,s in enumerate(prefix):            # '''enumerate()为列举函数'''            # '''i:代表下标'''            # '''s:代表改下标对应的值'''            # '''取到符号元组的值,作为prfix字典的key,根据key给value进行赋值'''            prefix[s] = 1024 ** (i + 1)            # '''打印得到的对应字典'''            # print(prefix)        symbols_value = 0        symbol = ''            # '''循环prefix字典,得到转换值'''        for key, value in prefix.items():            if bytes_value >= value:                symbols_value = bytes_value / value                symbol = key            # 如果不满足最小的KB,则以B显示            elif bytes_value < 1024:                return '%0.2fB' % bytes_value            # '''返回转换值(str)'''        return '%0.2f%sB' % (symbols_value, symbol)    def platform_judge(self):        # 将平台信息小写返回        platform = sys.platform.lower()        return platform    def disk_io_message(self):        t1 = psutil.disk_io_counters()        sleep(1)        t2 = psutil.disk_io_counters()        read_bytes = self.bytes2symbols(t2.read_bytes - t1.read_bytes)        write_bytes = self.bytes2symbols(t2.write_bytes - t1.write_bytes)        tps = t2.read_count + t2.write_count - t1.read_count - t1.write_count        '''判断平台,命令清屏'''        if self.platform_judge() == 'linux':            os.system('clear')        else:            os.system('cls')        return ('读/s:%10s'%read_bytes),('写/s:%10s'%write_bytes)+'\n',('Tps:%10d'%tps)    def network(self):        self.net = psutil.net_io_counters()        self._bytes_rcvd = '{0:.2f} Mb'.format(self.net.bytes_sent / 1024 / 1024)  # 网卡接收流量        self._bytes_sent = '{0:.2f} Mb'.format(self.net.bytes_recv / 1024 / 1024)  # 网卡发送流量        return '网卡接收流量'+self._bytes_rcvd,'网卡发送流量'+self._bytes_sentif __name__ == '__main__':    stra = []    M =MessyServerHardware()    stra.append(time.strftime('%Y-%m-%d %H:%M:%S'))    stra.append(M.cpu())    stra.append(M.memory())    stra.append(M.user())    stra.append(M.disk_io_message())    stra.append(M.network())    url = 'https://oapi.dingtalk.com/robot/send?access_token=91a38bc1a6afc21b23bf450a058baa9baa6d3beb7fcad1b431db18c97c258ce4'    headers = {"Content-Type": "application/json", "Chartset": "utf-8"}    data = {"msgtype": "text", "text": {"content": "%s " % (stra)},"at": {"atMobiles": [], "isAtAll": False}}    data1 = json.dumps(data)    requests.post(url=url, headers=headers, data=data1)
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!