python模块

psutil资源监控模块

py文件名字不要跟导入的模块重名

py文件是可以当作模块导入的

psutil 是一个资源监控模块

import psutil
#内存
mem = psutil.virtual_memory()
print(mem)

#cpu
cpu = psutil.cpu_percent(1)
print(cpu)

#硬盘
disk = psutil.disk_usage(r'c:')
print(disk)

 

 

os命令调用模块

os.system 利用python 帮我们调用系统命令

res返回 0 就等于命令执行成功,如果不为 0 执行结果失败

import os

# os.system利用python帮我们调用系统命令
# res返回0就等于命令执行成功,如果不为0执行结果失败

cmds = ['service httpd restart','uname -r','update','ifconfig -a']
for cmd in cmds:
    res = os.system(cmd)
    if res == 0:
        print('执行成功')
    else:
        print('执行失败')

# path.exists判断是否存在这个文件或者目录
res = os.path.exists(r'a.txt')
if res:
    print('文件已存在')
else:
    os.system('dir')

# remove移除文件或目录
os.remove('a.txt')


# rename重命名
os.rename('lock.txt', '250.txt')



# path.join,拼接路径
HOME = '/etc/yum.repo.d/'
res = os.path.join(HOME,'a.txt')
print(res)

 

 

yagmail 电子邮件发送模块

python 标准库中发送电子邮件的模块比较复杂,因此,有许多开源的库提供了更加易用的接口来发送电子邮件,其中yagmail 是一个使用比较广泛的开源项目,yagmail 底层依然使用了smtplib 和 email 模块,但是 yagmail 提供了更好的接口,并具有更好的易读性

 

yagmail 是开源项目,因此,在使用前需要安装

pip install yagmail

#连接邮箱服务器 yag
= yagmail.SMTP(user='xxx@163.com', password='xxxx', host='smtp.163.com') #发送邮件 yag.send(to='xxx@126.com', cc='xxx@163.com',subject='这是测试邮件', contents='这是测试邮件的内容') #断开连接 yag.close()

 查看电脑运行状态并发送邮件

import yagmail
import psutil
def sendmail(subject,contents):
    #连接邮箱服务器
    yag = yagmail.SMTP(user='1850****602@163.com',password='X****3456',host='smtp.163.com')
    #发送邮件
    yag.send(to='1850****602@163.com',subject=subject, contents=contents)
    #断开连接
    yag.close()

def cpu_info():
    cpu = psutil.cpu_percent(1)
    return cpu

def mem_info():
    mem = psutil.virtual_memory()
    total_mem = int(mem[0]/1024/1024)
    free_mem = int(mem[1]/1024/1024)
    percent_mem = mem[2]
    used_mem = int(mem[3]/1024/1024)
    mem_dict = {
        'total_mem':total_mem,
        'free_mem':free_mem,
        'percent_mem':percent_mem,
        'used_mem':used_mem
    }
    return mem_dict

def disk_info():
    disk = psutil.disk_usage(r'c:')
    total_disk = int(disk[0]/1024/1024/1024)
    used_disk = int(disk[1]/1024/1024/1024)
    free_disk = int(disk[2]/1024/1024/1024)
    percent_disk = disk[3]
    disk_dict = {
        'total_disk':total_disk,
        'used_disk':used_disk,
        'free_disk':free_disk,
        'percent_disk':percent_disk
    }
    return disk_dict

def main():
    cpu = cpu_info()
    mem = mem_info()
    disk = disk_info()
    msg = '''
       cpu利用率:%s%%
       内存总大小:%sM
       内存剩余大小:%sM
       内存使用率:%s%%
       内存使用大小:%sM
       硬盘总大小:%sG
       硬盘使用大小:%sG
       硬盘剩余大小:%sG
       硬盘使用率:%s%%
       ''' % (cpu,mem.get('total_mem'),mem.get('free_mem'),mem.get('percent_mem'),mem.get('used_mem'),disk.get('total_disk'),disk.get('used_disk'),disk.get('free_disk'),disk.get('percent_disk'))
    if cpu > 1:
        print('cpu过高')
        sendmail('cpu正在燃烧',msg)
    else:
        print('cpu正常')
if __name__ == '__main__':
    main()
View Code

 

ConfigParser模块

一、ConfigParser 简介

ConffigParser 使用来读取配置文件的包。配置文件的格式如下:

中括号"[]" 内包含为section 。 section 下面为类似key—value 的配置内容

import  configparser
config = configparser.ConfigParser()
config.read("mariadb.repo",encoding= 'gbk')

# 添加section
config.add_section('mysql')
config.set('mysql','baseurl','http://www.mysql.com')

config.remove_option('mysql','baseurl')#删除option
'''
查看是否有baseurl这个option
res = config.has_option('mysql','baseurl')
if res:
    print('已存在')
else:
    config.set('mysql','baseurl','http://www.mysql.com')
'''
config.remove_section('mysql')#删除section,如果有option一并删除
res = config.values()
for i in res:
    print(i)
'''
res = config.get('server','baseurl')#get通过section和option取value
print(res)
'''
config.write(open("mariadb.repo", "w"))#保存(必加)
View Code

 

 

paramiko 模块

模拟ssh 连接 linux 主机

import paramiko
#模拟ssh链接linux主机

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname='192.168.1.144',port=22,username='root',password='root')
while True:
    stdin,stdout,stderr = ssh.exec_command(input('===>:').strip())
    res = stdout.read().decode('utf-8')+stderr.read().decode('utf-8')
    print(res)

 

上传文件到 linux 

import paramiko
# 通过paramiko 模块连接主机上传
hostname = '192.168.1.144'
port = 22
username = 'root'
password = 'root'
t = paramiko.Transport((hostname,port))
t.connect(username=username,password=password)
sftp = paramiko.SFTPClient.from_transport(t)
sftp.put(r'D:\11\untitled1\requestment.txt','/root/requestment.txt')
sftp.close()
View Code

 

从linux 下载文件

import paramiko
# 通过paramiko 模块连接主机上传
hostname = '192.168.1.144'
port = 22
username = 'root'
password = 'root'
t = paramiko.Transport((hostname,port))
t.connect(username=username,password=password)
sftp = paramiko.SFTPClient.from_transport(t)
sftp.get('/root/txt22',r'D:\11\untitled1\txt22.txt')
sftp.close()
View Code

 

socket模块

利用socket模块监控端口

import socket
socket.setdefaulttimeout(1)  #设置超时时间

host_list = ['192.168.4.145:5555','192.168.4.146:555','192.168.4.147:5555','192.168.31.199:445']
for info in host_list:
    server = socket.socket()
    ip = re.compile('(.*?):(.*)').search(info).group(1)   #  .*? 叫做非贪婪匹配,尽可能的少匹配
    port = re.compile('(.*?):(.*)').search(info).group(2)  #  .*  叫做谈论匹配,进可能的多匹配
    res = server.connect_ex((ip, int(port)))
    if res == 0:     # res == 0 代表端口号启用  res != 0 代表端口号没启用
        print('%s--%s端口正常' % (ip, port))
    else:
        print('%s--%s端口异常' % (ip, port))
View Code

 

posted @ 2019-04-26 19:32  怜寒  阅读(172)  评论(0编辑  收藏  举报