python脚本监控获取当前Linux操作系统[内存]/[cpu]/[硬盘]/[登录用户]

此脚本应用在linux, 前提是需要有python和python的psutil模块

脚本

#!/usr/bin/env python
# coding=utf-8
import sys
import psutil
import time
import os
time_str =  time.strftime( "%Y-%m-%d", time.localtime( ) )
file_name = "./" + time_str + ".log"

if os.path.exists ( file_name ) == False :
   os.mknod( file_name )
   handle = open ( file_name , "w" )
else :
   handle = open ( file_name , "a" )

if len( sys.argv ) == 1 :
   print_type = 1
else :
   print_type = 2

def isset ( list_arr , name ) :
    if name in list_arr :
       return True
    else :
       return False

print_str = "";
if ( print_type == 1 ) or isset( sys.argv,"mem" )  :
 memory_convent = 1024 * 1024
 mem = psutil.virtual_memory()
 print_str +=  " 内存状态如下:\n" 
 print_str = print_str + "   系统的内存容量为: "+str( mem.total/( memory_convent ) ) + " MB\n" 
 print_str = print_str + "   系统的内存以使用容量为: "+str( mem.used/( memory_convent ) ) + " MB\n" 
 print_str = print_str + "   系统可用的内存容量为: "+str( mem.total/( memory_convent ) - mem.used/( 1024*1024 )) + "MB\n"
 print_str = print_str + "   内存的buffer容量为: "+str( mem.buffers/( memory_convent ) ) + " MB\n" 
 print_str = print_str + "   内存的cache容量为:" +str( mem.cached/( memory_convent ) ) + " MB\n"

if ( print_type == 1 ) or isset( sys.argv,"cpu" ) :
 print_str += " CPU状态如下:\n"
 cpu_status = psutil.cpu_times()
 print_str = print_str + "   user = " + str( cpu_status.user ) + "\n" 
 print_str = print_str + "   nice = " + str( cpu_status.nice ) + "\n"
 print_str = print_str + "   system = " + str( cpu_status.system ) + "\n"
 print_str = print_str + "   idle = " + str ( cpu_status.idle ) + "\n"
 print_str = print_str + "   iowait = " + str ( cpu_status.iowait ) + "\n"
 print_str = print_str + "   irq = " + str( cpu_status.irq ) + "\n"
 print_str = print_str + "   softirq = " + str ( cpu_status.softirq ) + "\n" 
 print_str = print_str + "   steal = " + str ( cpu_status.steal ) + "\n"
 print_str = print_str + "   guest = " + str ( cpu_status.guest ) + "\n"

if ( print_type == 1 ) or isset ( sys.argv,"disk" ) :
 print_str +=  " 硬盘信息如下:\n" 
 disk_status = psutil.disk_partitions()
 for item in disk_status :
     print_str = print_str + "   "+ str( item ) + "\n"

if ( print_type == 1 ) or isset ( sys.argv,"user" ) :
 print_str +=  " 登录用户信息如下:\n " 
 user_status = psutil.users()
 for item in  user_status :
     print_str = print_str + "   "+ str( item ) + "\n"

print_str += "---------------------------------------------------------------\n"
print ( print_str )
handle.write( print_str )
handle.close()

此时如果直接启动的话会报错(因为没有psutil模块)

下面安装psutil模块

下载

wget https://pypi.python.org/packages/source/p/psutil/psutil-2.1.3.tar.gz

解压

tar -zxvf psutil-2.1.3.tar.gz

安装

cd psutil-2.1.3/

python setup.py install

安装过程中报错

原因:缺少python-dev的依赖环境, 安装它

yum -y install python-devel.x86_64

再次安装psutil

python setup.py install

安装成功

测试psutil模块是否安装成功

[root@localhost psutil-2.1.3]# python
>>> import psutil
>>> psutil.pids()

安装成功

运行脚本

./system.py 

显示

[root@localhost test]# ./system.py 
 内存状态如下:
   系统的内存容量为: 1863 MB
   系统的内存以使用容量为: 445 MB
   系统可用的内存容量为: 1418MB
   内存的buffer容量为: 32 MB
   内存的cache容量为:247 MB
 CPU状态如下:
   user = 5.9
   nice = 0.0
   system = 8.34
   idle = 1125.86
   iowait = 2.2
   irq = 0.02
   softirq = 0.48
   steal = 0.0
   guest = 0.0
 硬盘信息如下:
   sdiskpart(device='/dev/mapper/VolGroup-lv_root', mountpoint='/', fstype='ext4', opts='rw')
   sdiskpart(device='/dev/sda1', mountpoint='/boot', fstype='ext4', opts='rw')
   sdiskpart(device='/dev/sr0', mountpoint='/mnt/redhat', fstype='iso9660', opts='ro')
 登录用户信息如下:
    suser(name='root', terminal='pts/0', host='192.168.145.1', started=1510234880.0)
---------------------------------------------------------------

成功!

posted @ 2017-11-09 14:38  扶苏公子x  阅读(6227)  评论(0编辑  收藏  举报