zoukankan      html  css  js  c++  java
  • 模块

      模块名不要与py文件重名;py文件可以作为模块导入。

    一、paramiko

    基于用户名和密码的sshclient方式登录

    缺点:只能在绝对路径下执行命令,不能在当前目录下执行

    import paramiko
    ssh=paramiko.SSHClient()   #建立一个sshclient对象
    #允许将信任的主机自动加入到host_allow列表;此方法必须加到connec方法前
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy)
    #调用connect方法连接服务器
    ssh.connect(hostname='192.168.42.12',port=22,username='root',password='0330')
    while True:
        stdin,stdout,stderr=ssh.exec_command(input('===>:').strip())
        res=stdout.read().decode('utf-8')+stderr.read().decode('utf-8')
        #拼接字符串,可以看到报错信息
        print(res)
        ssh.close()
    View Code
    import paramiko
    #实例化一个transport对象
    t=trans=paramiko.Transport(('192.168.42.12',22))  #一定是元组形式的变量
    #建立连接
    t.connect(username='root',password='0330')
    #实例化一个sftp对象,指定连接的通道
    sftp=paramiko.SFTPClient.from_transport(t)
    #发送文件,不能直接上传到目录,可以改名
    sftp.put(r'D:pycharm】.txt','/root/a.txt')
    #关闭
    t.close()
    传送sftp文件
    import paramiko
    #实例化一个transport对象
    t=trans=paramiko.Transport(('192.168.42.12',22))  #一定是元组形式的变量
    #建立连接
    t.connect(username='root',password='0330')
    #实例化一个sftp对象,指定连接的通道
    sftp=paramiko.SFTPClient.from_transport(t)
    #下载文件,不能直接上传到目录,可以改名
    sftp.get('/root/a.txt',r'D:pycharm】.txt')
    #关闭
    t.close()
    下载sftp文件

     二、socket(效率高)

    基于ip地址和端口号,实现收发消息,可以实现服务的监控

    import socket
    监控一个主机
    sever=socket.socket()  #tcp协议
    sever.settimeout(1) #设置超时时间,超过1秒就停止
    res=sever.connect_ex(('127.0.0.1',8080))
    print(res)  #res==0表示端口号启用,res!=0表示端口号没启用
    监控一个主机
    监控多个主机
    import socket,re
    hosts=['1.1.1.1:8080','2.2.2.2:8080','3.3.3.3:8080','127.0.0.1:8080','4.4.4.4:8080','5.5.5.5:8080']
    for host in hosts:
        # compile编译
        # (.*?)非贪婪匹配,尽可能少的匹配
        # (.*)贪婪匹配,尽可能多的匹配
        # search方法表示去host里匹配
        # 正则匹配的是字符串
        ip = re.compile('(.*?):(.*)').search(host).group(1)
        port = re.compile('(.*?):(.*)').search(host).group(2)
        sever=socket.socket()
        sever.settimeout(1)
        res=sever.connect_ex((ip,int(port)))   #必须是元组形式
        if res == 0:
            print('%s----%s:ok' % (ip,port))
        else:
            print('%s----%s:不ok' % (
    import psutil
    import yagmail
    def mail(subject,contents):
        # 连接邮件服务器
        yag=yagmail.SMTP(user='xxx@163.com',password='jam0330',host='smtp.163.com')
        #发送邮件
        yag.send(to='xxx@163.com',subject=subject,contents=contents)
        #关闭邮件
        yag.close()
        # 监控内存
    def mem():
        mem = psutil.virtual_memory()
        mem_dict = {'mem_total':int(mem[0])/1024/1024,    #输出单位为
                    'mem_free':int(mem[1])/1024/1024,
                    'mem_percent':mem[2],
                    'mem_used':int(mem[3])/1024/1024}
        return mem_dict
    # 监控1秒内cpu的使用率
    def cpu():
        cpu = psutil.cpu_percent(1)
        return cpu
    # 监控硬盘
    def disk():
        disk = psutil.disk_usage(r'c:')
        disk_dict = {'disk_total':int(disk[0])/1024/1024,
                     'disk_used':int(disk[1])/1024/1024,
                     'disk_free':int(disk[2])/1024/1024,
                     'disk_percent':disk[3]}
        return disk_dict
    def main():
        a = mem()
        b = cpu()
        c =disk()
        mag = '''
                内存总大小:%sM
                内存剩余大小:%sM
                内存使用率:%s%%
                内存使用大小:%sM
                cpu使用率:%s%%
                硬盘总大小:%sM
                硬盘使用大小:%sM
                硬盘剩余大小:%sM
                硬盘使用率:%s%%
        ''' % (a['mem_total'],a['mem_free'],a['mem_percent'],a['mem_used'],b,
               c['disk_total'],c['disk_used'],c['disk_free'],c['disk_percent'])
        if a['mem_percent'] > 50:    #判断内存使用率是否超过50
            print('内存超过50%了,省着点用呐')
            mail('内存预警',mag)
        else:
            print('内存空间足足的')
        if b > 50:      #判断cpu是否超过50
            print('cpu超过50%了')
            mail('cpu预警',mag)
        else:
            print('cpu护你走天下')
        if c['disk_percent'] > 50:    #判断硬盘使用率是否超过50
            print('硬盘转疯了,快让他歇歇')
            mail('硬盘预警',mag)
        else:
            print('硬盘还有好久的寿命')
    if __name__ == '__main__':
        main()
    监控多个主机

    三、re正则

    # compile编译
        # (.*?)非贪婪匹配,尽可能少的匹配
        # (.*)贪婪匹配,尽可能多的匹配
        # search方法表示去host里匹配
        # 正则匹配的是字符串
        ip = re.compile('(.*?):(.*)').search(host).group(1)
        port = re.compile('(.*?):(.*)').search(host).group(2)
    .*?

    四、yagmail

    提供端口发送电子邮件,具有更好的易读性

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

    import yagmail
    # 连接邮件服务器
    yag=yagmail.SMTP(user='***@163.com',password='****',host='smtp.163.com')
    #发送邮件
    yag.send(to='***9@163.com',subject='subject',contents='contents')
    #关闭邮件
    yag.close()
    View Code

    五、psutil

    import psutil
    # 监控内存
    mem = psutil.virtual_memory()
    print(mem)
    # 监控1秒内cpu的使用率
    cpu = psutil.cpu_percent(1)
    print(cpu)
    # 监控硬盘
    disk = psutil.disk_usage(r'c:')
    print(disk)
    监控内存,cpu,硬盘
    # 持续监控内存,cpu,硬盘的使用情况
    import psutil
    import yagmail
    def mail(subject,contents):
        # 连接邮件服务器
        yag=yagmail.SMTP(user='18335192869@163.com',password='jam0330',host='smtp.163.com')
        #发送邮件
        yag.send(to='18335192869@163.com',subject=subject,contents=contents)
        #关闭邮件
        yag.close()
        # 监控内存
    def mem():
        mem = psutil.virtual_memory()
        mem_dict = {'mem_total':int(mem[0])/1024/1024,    #输出单位为
                    'mem_free':int(mem[1])/1024/1024,
                    'mem_percent':mem[2],
                    'mem_used':int(mem[3])/1024/1024}
        return mem_dict
    # 监控1秒内cpu的使用率
    def cpu():
        cpu = psutil.cpu_percent(1)
        return cpu
    # 监控硬盘
    def disk():
        disk = psutil.disk_usage(r'c:')
        disk_dict = {'disk_total':int(disk[0])/1024/1024,
                     'disk_used':int(disk[1])/1024/1024,
                     'disk_free':int(disk[2])/1024/1024,
                     'disk_percent':disk[3]}
        return disk_dict
    def main():
        a = mem()
        b = cpu()
        c =disk()
        mag = '''
                内存总大小:%sM
                内存剩余大小:%sM
                内存使用率:%s%%
                内存使用大小:%sM
                cpu使用率:%s%%
                硬盘总大小:%sM
                硬盘使用大小:%sM
                硬盘剩余大小:%sM
                硬盘使用率:%s%%
        ''' % (a['mem_total'],a['mem_free'],a['mem_percent'],a['mem_used'],b,
               c['disk_total'],c['disk_used'],c['disk_free'],c['disk_percent'])
        if a['mem_percent'] > 50:    #判断内存使用率是否超过50
            print('内存超过50%了,省着点用呐')
            mail('内存预警',mag)
        else:
            print('内存空间足足的')
        if b > 50:      #判断cpu是否超过50
            print('cpu超过50%了')
            mail('cpu预警',mag)
        else:
            print('cpu护你走天下')
        if c['disk_percent'] > 50:    #判断硬盘使用率是否超过50
            print('硬盘转疯了,快让他歇歇')
            mail('硬盘预警',mag)
        else:
            print('硬盘还有好久的寿命')
    if __name__ == '__main__':
        main()
    持续监控

    六、os模块

    import os
    
    # 利用os.system调用系统命令
    cmds = ['uname -r','update']
    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')
        
    # os.path.join拼接路径
    path1='D:/python/'
    path2='lion'
    res1=os.path.join(path1,path2)
    print(res1)
    
    # os.remove删除文件
    os.remove(r'a.txt')
    
    # os.rename重命名
    os.rename('a.txt','b.txt')
    View Code

    七、configparser模块

    ConfigParser 是用来读取配置文件的包。配置文件的格式如下:中括号“[ ]”内包含的为section。section 下面为类似于key-value 的配置内容。
    import configparser
    # 实例化
    config = configparser.ConfigParser()
    config.read('mariadb.txt',encoding='utf-8')
    # 获取section节点
    res = config.sections()
    print(res)
    # 获取指定section中的option
    res1=config.options('mysql')
    print(res1)
    # 获取section指定的option的值
    config.get('mysql','baseurl')
    # 获取section中所有的配置信息
    config.items('mysql')
    # 修改某个option值,不存在会创建
    config.set('mysql','baseurl','url')
    config.write('mariadb.txt','w')
    # 检查section或option是否存在,返回bool值
    config.has_section('mysql')
    config.has_option('mysql','baseurl')
    # 将section下的所有内容都删除
    config.remove_section('mysql')
    # 将内容写入文件中
    config.write('mariadb.txt','w')
    View Code
  • 相关阅读:
    Atitit 计算机的组成与设计 目录 1. 计算机系统是由硬件系统和软件系统两大部分组成。  1 1.1. Cpu(alu+cu ) 1 1.2. 存储内存 外村 1 1.3. Io设备 鼠标
    atitit 软件框架类库设计的艺术.docx 目录 1. index 1 2. 第2章 设计api的动力之源 14 2 2.1. .1 分布式开发 14 2 2.2. 2.2 模块化应用程序 16
    Atitit 信息检索 之音乐检索实践 艾提拉注 目录 1. 常规检索 歌手 歌名 1 1.1. 年代检索 1 1.2. 歌词检索(可以依靠web 1 1.3. 哼唱检索 原曲检索(可以使用酷
    Atitit 信息检索 文档资料的查询与检索 目录 1. 索引法 1 1.1. 名字placeholder索引 1 1.2. 文本txt索引 1 1.3. 索引集合包zip 1 1.4. 文件名
    Atitit 微服务实践 艾提拉著 微服务主要解决几个问题负载均很 目录 1. 微服务的模式 http请求层 vs服务层 1 1.1. Http vs 服务层优缺点 1 2. 实现技术 2
    Atitit SpringCloud 使用总结 目录 1.1. 启动一个服务注册中心EurekaServer 1 1.2. 三、创建一个服务提供者 (eureka client) 2 1.3. 创建
    Atitit 文档资料处理重要类库与工具 跨语言api和第三方api跨语言 类库工具 大概功能 功能 Curl httpclient 文件上传下载 数据传输rest doctotext.exe
    Atitit 网盘使用法 艾提拉著 目录 1. 需要解决几个问题 2 1.1. 多关键词搜索的问题 使用every索引解决 2 1.2. 重要文具类索引使用分类索引 日志 crm类增加000前缀
    Atitit 信息化数据采集与分析解析 技术 处理技术 爬虫与http rest json xml h5解析 db数据库 mail协议与处理 数据压缩与解压 数据处理 文本处理
    Atitit mis 管理信息系统概论 艾提拉著 目录 1. 互联网三大定律 2 1.1. 摩尔定律和 2 1.2. 吉尔德定律 电脑及网络宽带资源成为重要免费资源 2 1.3. 梅特卡夫定律 用户
  • 原文地址:https://www.cnblogs.com/daisyyang/p/10774372.html
Copyright © 2011-2022 走看看