psutil模块:需先下载此模块
#py文件名字不要跟导入的模块重名
#py文件是可以当做模块导入的
import psutil #资源监控模块
mem = psutil.virtual_memory() #监控内存
print(men)
cpu = psutil.cpu_percent(1) #监控cpu
print(cpu)
disk = psutil.disk_usage(r'c:') #监控硬盘
print(disk)
yagmail模块:yagmail是发送邮件的,首先需要下载
import yagmail
yag = yagmail.SMTP(user='邮箱地址',password='邮箱授权密码',host='smtp.qq.com'(邮件格式))
yag.send(to='接收方邮箱地址',subject='主题',contents='内容')
yag.close()
psutil模块与yagmail应用实例


import psutil,yagmail
def sendmail(nr,nr1):
yag = yagmail.SMTP(user='shuaiyin1120@163.com',password='sin19941120',host='smtp.163.com')
yag.send(to='shuaiyin1120@163.com',subject=nr,contents=nr1)
yag.close()
def jk_cpu():
cpu = psutil.cpu_percent(1)
return cpu
def jk_disk():
disk = psutil.disk_usage('c:')
disk_total = disk[0]//1024//1024//1024
disk_used = disk[1]//1024//1024//1024
disk_free = disk[2]//1024//1024//1024
disk_dict = {
'硬盘总量':disk_total,
'硬盘使用量':disk_used,
'硬盘空余量':disk_free,
}
return disk_dict
def jk_mem():
mem = psutil.virtual_memory()
mem_total = mem[0]//1024//1024//1024
mem_percent = mem[2]
mem_used = mem[3]//1024//1024//1024
mem_free = mem[4]//1024//1024//1024
mem_dict = {
'内存总量':mem_total,
'内存使用率':mem_percent,
'内存使用量':mem_used,
'内存空余量':mem_free,
}
return mem_dict
def main():
cpu = jk_cpu()
disk = jk_disk()
mem = jk_mem()
msg ='''
cpu_percent:%s%%
disk_total:%sG
disk_used:%sG
disk_free:%sG
mem_total:%sG
mem_percent:%s%%
mem_used:%sG
mem_free:%sG
''' % (cpu,disk.get('硬盘总量'),disk.get('硬盘使用量'),disk.get('硬盘空余量'),mem.get('内存总量'),mem.get('内存使用率'),mem.get('内存使用量'),mem.get('内存空余量'))
if cpu >1:
sendmail('您的cpu使用过高','使用了%s' % cpu)
elif disk.get('硬盘空余量') < 30:
sendmail('您的硬盘容量不足','剩余量为%s' % disk.get('硬盘空余量'))
elif mem.get('内存使用率') > 60:
sendmail('您的内存不足','剩余内存量为%s' % mem.get('内存空余量'))
else:
print('系统正常')
if __name__ == '__main__':
main()
os模块:调用操作系统
import os #利用python帮助我们调用windows系统命令或Linux命令
res = os.system('ipconfig') #查看一个命令的执行结果,返回值1是失败,0是成功
print(res) #打印会出现乱码,解决方法,修改pycharm配File->Settings->Editor->File Encodings,把global encoding设置成gbk即可。
利用system展开思路,就是说布置很多命令,完后查看命令的执行结果。


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


import os
res = os.path.exists('此处输入文件的路径即可') #判断是否存在这个文件或目录,他会返回一个布尔形式的值
比如我要创建一个文件,但我不知道这个文件是否存在。


res = os.path.exists(r'c:\users\fengzi\desktop\a.txt')
if res:
print('文件已存在')
else:
os.system('type nul > c:\users\fengzi\desktop\a.txt')


import os
res = os.remove('此处输入文件的路径即可') #移除文件或目录


import os
HMOE = '/etc/yum.repo.d/' #定义了环境变量
res = os.path.join(HOME,'a.txt') #拼接路径


import os
res = os.rename(原文件名字,新文件名字) #重命名
paramiko模块:模拟ssh连接Linux主机
import paramiko #也是属于第三方模块,它是模拟ssh协议远程连接linux主机
ssh = paramiko.SSHClient() #声明一个变量
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) #忽略你的策略,就是know_hosts这个文件
ssh.conect(hostname='192.168.254.70',port=22,username='root',password='root') #连接主机
while True:
stdin,stdout,stderr=ssh.exec_command(input('===>:').strip()) #执行命令
print(stdout.read().decode('gbk')+stderr.read().decode('gbk'))
import paramiko #通过paramiko模块上传文件
hostname = 'ip'
port = 22
username = 'root'
password = 'root'
t = paramiko.Transport(hostname,port)
t.connect(username='',password='')
sftp = paramiko.SFTPClient.from_transport(t)
sftp.put(r'c:\users\fengzi\Desktop\Linux.xmind','/root/aaa.xmind') #你要复制的文件绝对路径,你要复制到Linux里的绝对路径
sftp.close()
import paramiko #通过paramiko模块下载Linux文件
hostname = 'ip'
port = 22
username = 'root'
password = 'root'
t = paramiko.Ttansport(hostname,port)
t.connect(username='',password='')
sftp = paramiko.SFTPClient.from_transport(t)
sftp.get(r'/root/test/yml',r'c:\users\Desktop\test.yml')
sftp.close()
socket模块:(基于ip地址和端口号收发消息的)
import socket
server = socket.socket()#测试端口是否启用
server.settimeout(1) #这是为了当你连接没有的ip时,他会等待时间非常长,为了加快结果的显示。
server.connect_ex((’ip’,端口号)) #去连接主机端口号
server = socket.socket()#tcp协议
server.settimeout(1)#设置超时时间
res = server.connect_ex((ip,int(port)))
# print(res)#res == 0代表端口号启用|res != 0代表端口号没启用
if res == 0:
print('%s---%s:ok' % (ip,port))
else:
print('%s---%s:不通' % (ip, port))
re模块(正则表达式)
#.*?叫做非贪婪匹配,尽可能的少匹配
#.*叫做贪婪匹配,尽可能的多匹配
# a = 'fenif1212nfi129f21f'
# res = re.compile('(\d+)').findall(a)
# print(res)
hosts = ['1.1.1.1:90','2.2.2.2:8080','127.0.0.1:80','3.3.3.3:50','192.168.1.1:9090']
for host in hosts:
ip = re.compile('(.*?):(.*)').search(host).group(1)
port = re.compile('(.*?):(.*)').search(host).group(2)
config模块:装一个yum源用代码自动填充里面的内容
import configparser
config = confingparser.ConfigParser()
config.read('文件的绝对路径',encoding='gbk')
congif.add_section('mysql')
config.write(open('文件得绝对路径','w'))#保存
config.set('mysql','baseurl','http://www.mysql.com')#往mysql这个section里添加option和value
config.write(open('mariadb.repo','w'))#再保存
config.remove_option('mysql','baseurl')#删除option
config.has_option('mysql','baseurl')#查看section里有没有这个option,返回布尔形式
config.remove_section('mysql')#删除section,如果此section里有option,也一并删除
res = config.values()#查看所有的section
for i in res:
print(i)
res = config.get('server','baseurl')#通过section和option取value
print(res)
pymsql模块:
#pip先安装
#而后即可connect连接数据库
db=pymsql.connect("ip",user="root",password="root",db="要测试的数据库名字",port="3306")
cur=db.cursor() 这个叫游标,有以上这两步,就可以连接数据库,去操作数据库。
for i in range(100000):
cur.execute("insert into test_table values (0,'name-%s','title=%s')" % (i,i))
db.commit()
result=cur.fetchall()
cur.fetchall是查看所有数据,fetone是一条数据。
#这个是插入10万条数据。
show variables like ‘profiling’
set profiling=1; #这是临时性的,重启数据库就又关闭了。
#profiling是查看你的sql语句执行时间的,这样就能测试索引的效率。