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,yagmaildef 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 cpudef 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_dictdef 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_dictdef 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语句执行时间的,这样就能测试索引的效率。