• 运用Python语言编写获取Linux基本系统信息(一):获得Linux版本、内核、当前时间


    申请博客有一段时间了,然而到现在还一篇没有写过。。。。。

    主要因为没有想到需要写些什么,最近在学习Python语言,照着书上看了看最基础的东西,发现根本看不进去,而且光看的话今天看了觉得都理解懂了,过两天自己回顾这部分内容的时候发现就又忘了,于是自己就想到自己边学边写一些小程序,以便能更好的让自己记住语法。

    一、开发环境以及测试环境

    Python2.7.10、pycharm、VM虚拟机、CentOS6.3

    二、代码实现

    代码结构:

    commands.py —> os_info_in.py —> os_info.py  |

                    linux_status.py  |-->linux_status_main.py

    实现:

    commands.py:

    实现在Python代码中运行Linux的命令,得到打印的结果集,并返回结果results

    1 # coding=UTF-8
    2 import os
    3 class commands:
    4     def __init__(self,comm):
    5         self.commend=comm
    6     def excute_command(self):
    7         result = os.popen(self.commend)
    8         results = result.readlines()
    9         return results

    os_info_in.py:

    通过导入刚刚编写的commands.py模块来获取Linux的OS版本号,内核版本号,以及当前的时间。

    记录:

    eachLine.strip()去掉eachLine前后的空格
    findall('Description:	#(.*)',afind)搜寻与正则表达式相匹配的内容
     1 #!/usr/bin/env python
     2 # coding=UTF-8
     3 import commands
     4 import re
     5 class os_info_in:
     6     def os_version(self):#获取linux的OS版本号
     7         L_command = commands.commands('lsb_release -a')
     8         comm=L_command.excute_command()
     9         allLine = []
    10         os_ver=''
    11         for eachLine in comm:
    12             allLine.append(eachLine.strip())
    13         for afind in allLine:
    14             if re.findall('Description:	#(.*)',afind):
    15                 os_ver = re.findall('Description:	#(.*)',afind)
    16         return  os_ver[0]
    17     def os_kernel(self):#获取linux的内核版本
    18         L_command = commands.commands('uname -r')
    19         comm=L_command.excute_command()
    20         allLine = []
    21         for eachLine in comm:
    22             allLine.append(eachLine.strip())
    23         return allLine[0]
    24     def os_date(self):#获取系统时间
    25         L_command = commands.commands('date')
    26         comm=L_command.excute_command()
    27         allLine = []
    28         for eachLine in comm:
    29             allLine.append(eachLine.strip())
    30         return allLine[0]

    linux_status.py:

    保存获取到的linux状态信息


    1
    #!/usr/bin/env python 2 # coding=UTF-8 3 #保存linux状态信息 4 #os版本号:os_version 5 #内核版本号:os_kernal 6 #系统当前时间:os_date 7 class linux_status: 8 pass

    os_info.py:

    通过os_info_in.py获取到的linux状态信息保存到专门储存状态信息的类linux_status中并返回

     1 # coding=UTF-8
     2 import linux_status
     3 import os_info_in
     4 class os_info:
     5     def __init__(self):
     6         self.linux_stat=linux_status.linux_status()
     7         self.os_infos_in= os_info_in.os_info_in()
     8     def os_info(self):
     9         self.linux_stat.os_version = self.os_infos_in.os_version()
    10         self.linux_stat.os_kernal = self.os_infos_in.os_kernel()
    11         self.linux_stat.os_date = self.os_infos_in.os_date()
    12         return self.linux_stat

    linux_status_main.py:

    测试主函数(打印所获取的信息)

     1 #!/usr/bin/env python
     2 # coding=UTF-8
     3 import linux_status
     4 import os_info
     5 
     6 #linux版本,内核,时间
     7 linux=linux_status.linux_status()
     8 os= os_info.os_info()
     9 linux=os.os_info()
    10 print '系统:',linux.os_version
    11 print '内核:',linux.os_kernal
    12 print '时间:',linux.os_date

    三、结果展示

    由于刚刚接触Python语言,小程序刚刚写完感觉结构很冗余,分成一块一块的比较容易理解,感觉并不用把结果存进一个一个类里面,存到一个字典里面就可以(当时不是很熟悉字典),以后写的获取文件系统状态就是用的字典保存的,先写到这吧,慢慢写。。。

    第一次写,希望大神多多提提意见~~~~~嘻嘻~~~~

  • 相关阅读:
    《医药营销与处方药学术推广》:可以通过这本书了解一些国内制药企业的市场营销的情况 三星
    [Vue-rx] Watch Vue.js v-models as Observable with $watchAsObservable and RxJS
    [Vue-rx] Pass Template Data Through domStreams in Vue.js and RxJS
    [Vue-rx] Disable Buttons While Data is Loading with RxJS and Vue.js
    [Vue-rx] Share RxJS Streams to Avoid Multiple Requests in Vue.js
    [Vue-rx] Switch to a Function which Creates Observables with Vue.js and Rxjs
    [Vue-rx] Handle Image Loading Errors in Vue.js with RxJS and domStreams
    [Vue-rx] Stream an API using RxJS into a Vue.js Template
    [Vue-rx] Access Events from Vue.js Templates as RxJS Streams with domStreams
    [RxJS] Get current value out of Subject (BehaviorSubject)
  • 原文地址:https://www.cnblogs.com/soysaucejyz/p/5063843.html
Copyright © 2020-2023  润新知