我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python自动化运维

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python自动化运维

psutil库


获取系统运行的进程和系统利用率

[root@serverc ~]# yum -y install python2
[root@serverc ~]# yum -y install python2-psutil
[root@serverc ~]# python

1.cpu信息

  • user 执行用户进程的时间百分比
  • system 执行内核进程和中断的时间百分比
  • idle cpu处于idle状态的时间百分比
  • iowait 由于IO等待而使CPU处于idle(空闲)状态的时间百分比

    import psutil
    psutil.cpu_times() #使用cpu_times()方法获取cpu的完整信息
    psutil.cpu_times(percpu=True) #显示所有逻辑cpu信息
    psutil.cpu_times().user #用户user的cpu时间比
    psutil.cpu_count() #获取cpu的逻辑个数,默认logical=True4
    psutil.cpu_count(logical=False) #获取cpu的物理个数

2.获取内存信息

total(内存总数)、used(已使用的内存数)、free(空闲内存数)、buffers(缓冲使用数)、cache(缓存使用数)、swap(交换分区使用数)

>>> mem = psutil.virtual_memory()
>>> mem
>>> mem.total
>>> mem.free
>>> mem.used
>>> psutil.swap_memory()

3.磁盘信息

read_count(读IO数)、write_count(写IO数)、read_bytes(IO读字节数)、write_bytes(IO写字节数)、read_time(磁盘读时间)、write_time(磁盘写时间)

>>> psutil.disk_partitions() #获取完整信息
>>> psutil.disk_usage('/')   #获取分区的使用情况
>>> psutil.disk_io_counters()  #获取硬盘总的IO个数、读写信息
>>> psutil.disk_io_counters(perdisk=True) #获取单个分区IO个数、读写信息

4.网络信息

bytes_sent(发送字节数)、 bytes_recv(接收字节数), packets_sent(发送数据包数), packets_recv(接收数据包数)

>>> psutil.net_io_counters() #获取网络总的IO信息,默认pernic=False
>>> psutil.net_io_counters(pernic=True) #pernic=True 输出每个网络借口的IO信息

5.其他系统信息

psutil模块支持获取用户登录、开机时间等信息

>>> psutil.users() #返回当前登录系统的用户信息
>>> import psutil,datetime
>>> psutil.boot_time() #获取开机时间,以linux时间戳格式返回
>>> datetime.datetime.fromtimestamp(psutil.boot_time()).strftime("%Y-%m-%d %H:%M:%S") #转换成自然时间格式

系统进程管理方法


>>> import psutil  
>>> psutil.pids()  #列出所有进程PID
>>> p = psutil.Process(1555)  #实例化一个Process对象,参数为一进程PID
>>> p.name()  #进程名
'sshd'
>>> p.exe()  #进程bin路径
'/usr/sbin/sshd'
>>> p.cwd()  #进程工作目录绝对路径
>>> p.status()  #进程状态
'sleeping'
>>> p.create_time()  #进程创建时间,时间戳格式
>>> p.uids()  #进程uid信息
>>> p.gids()  #进程gid信息
>>> p.cpu_times()  #进程CPU时间信息,包括user、system的cpu时间
>>> p.cpu_affinity()  #get进程CPU素和度,如果设置进程CPU素和度,将CPU号作为参数即可
>>> p.memory_info()  #进程内存rss、vms信息
>>> p.memory_percent()  #进程内存利用率
>>> p.connections()  #返回打开进程socket的namedutples列表、包括fd、family、laddr等信息
>>> p.num_threads()  #进程开启的线程数

popen类的使用

>>> import psutil
>>> from subprocess import PIPE  #通过psutil的Popen方法启动的应用程序,可以跟踪该程序运行的所有相关信息
>>> p = psutil.Popen(["/usr/bin/python","-c","print('hello')"],stdout=PIPE)
>>> p.name()
'python'
>>> p.username()
'root'
>>> p.communicate()
('hello\n', None)
>>> p.cpu_times()  #得到进程运行的CPU时间

IP地址处理模块IPy


[root@serverc ~]# yum -y install python-IPy

1.IP地址、网段的基本处理

>>> from IPy import IP
>>> IP('10.0.0.0/8').version() #区分IPv4与IPv6
>>> IP('::1').version()
>>> ip = IP('192.168.0.0/16')
>>> print ip.len() #输出IP/16网段的IP个数
>>> for x in ip:   #输出IP清单
>>>     print(x)

2.反向解析名称、IP类型、IP转换

>>> from IPy import IP
>>> ip = IP('192.168.1.101')
>>> ip.reverseName()  #反向解析地址格式
>>> ip.iptype()  #为私网类型'PRIVATE'
>>> IP('8.8.8.8').iptype()  #为公网类型 'PUBLIC'
>>> IP('8.8.8.8').int() #转换成整型格式
>>> IP('8.8.8.8').strHex() #转换成十六进制格式
>>> IP('8.8.8.8').strBin()  #转换成二进制格式
>>> print(IP(0x8080808))  #十六进制转成IP格式

3.IP与掩码产生网段格式

>>> print(IP('192.168.1.0').make_net('255.255.255.0'))
>>> print (IP('192.168.1.0/255.255.255.0',make_net=True))
>>> print (IP('192.168.1.0-192.168.1.255',make_net=True))

结果都是:192.168.1.0/24

4.也可以通过strNormal方法指定不同wantprefixlen参数值以定制不同输出类型的网段。

wantprefixlen的取值及含义:

  • wantprefixlen = 0 无返回值
  • wantprefixlen = 1 prefix格式
  • wantprefixlen = 2 decimalnetmask格式
  • wantprefixlen = 3 lastIP格式

操作如下:

>>> IP('192.168.1.0/24').strNormal(0)
    '192.168.1.0'
>>> IP('192.168.1.0/24').strNormal(1)
    '192.168.1.0/24'
>>> IP('192.168.1.0/24').strNormal(2)
    '192.168.1.0/255.255.255.0'
>>> IP('192.168.1.0/24').strNormal(3)
    '192.168.1.0-192.168.1.255'

5.判断IP地址和网段是否包含于于另一个网段中

>>> '192.168.1.100' in IP('192.168.1.0/24')
>>> IP('192.168.1.0/24') in IP('192.168.0.0/16')

判断两个网段是否存在重叠,采用IPy提供的overlaps方法

>>> IP('192.168.0.0/23').overlaps('192.168.1.0/24') #返回1代表存在重叠
>>> IP('192.168.0.0/24').overlaps('192.168.2.0') #返回0代表不存在重叠

示例 根据输入的IP或子网返回网络、掩码、广播、反向解析、子网数、IP类型等

#!/usr/bin/env python
from IPy import IP

ip_s = raw_input('Please input an IP or net-range: ') #输入IP地址或网段地址
ips = IP(ip_s)
if len(ips) > 1: #为一个网络地址
        print ('net: %s' %ips.netmask()) #输出网络地址
        print ('netmask: %s' %ips.netmask()) #输出网络掩码地址
        print ('broadcast: %s' %ips.broadcast()) #输出网络广播地址
        print ('reverse address: %s' %ips.reverseNames()[0]) #输出地址反向解析
        print ('subnet: %s' %len(ips))  #输出网络子网数
else:
        print ('reverse address: %s' %ips.reverseNames()[0]) #输出IP反向解析

print ('hexadecimal: %s' %ips.strHex()) #输出十六进制地址
print ('binary ip: %s' %ips.strBin()) #输出二进制地址
print ('iptype: %s' %ips.iptype()) #输出地址类型

[root@serverc ~]# vi ip_mask.py

DNS处理模块dnspython


A记录:将主机名转换成IP地址
MX记录:邮件交换记录,定义邮件服务器的域名
CNAME记录:指别名记录,实现域名间的映射
NS记录:标记区域的域名服务器及授权子域
PTR记录:反向解析,于A记录相反,将IP转换成主机名
SOA记录:SOA标记,一个起始授权区的定义

[root@serverc ~]# wget http://www.dnspython.org/kits/1.9.4/dnspython-1.9.4.tar.gz
[root@serverc ~]# tar -zxvf dnspython-1.9.4.tar.gz
[root@serverc ~]# python setup.py install

实现A记录查询方法

#! /usr/bin/env python
import dns.resolver

domain = raw_input('Please input an domain: ') #输入域名地址 如www.baidu.com
A = dns.resolver.query(domain,'A') #指定查询类型为A记录
for i in A.response.answer:  #通过response.answer方法获取查询回应信息
  for j in i.items:    #遍历回应信息
        print j.address

[root@serverc ~]# python dns_simple.py
Please input an domain: www.baidu.com

实现MX记录查询方法

#! /usr/bin/env python
import dns.resolver

domain = raw_input('Please input an domain: ') #如 163.com
MX = dns.resolver.query(domain,'MX')
for i in MX: 
    print 'MX preference = ', i.preference,'mail exchanger = ',i.exchange

实现NS记录查询方法

#!/usr/bin/env python
import dns.resolver

domain = raw_input('Please input an domain: ') #输入一级域名  如baidu.com
ns = dns.resolver.query(domain, 'NS')
for i in ns.response.answer: 
  for j in i.items:
        print j.to_text()

实现CNAME记录查询方法

#!/usr/bin/env python
import dns.resolver

domain = raw_input('Please input an domain: ')
cname = dns.resolver.query(domain, 'CNAME') #指定查询类型为CNAME记录
for i in cname.response.answer: #结果将回应cname后的目标域名
    for j in i.items:
        print j.to_text()

监控所有服务的IP是否正常

#!/usr/bin/python
import dns.resolver
import os
import httplib

iplist=[]  #定义域名IP列表变量
appdomain="www.taobao.com"  #定义业务域名

def get_iplist(domain=""): #域名解析函数,解析成功IP将被追加到iplist
  try:
        A = dns.resolver.query(domain,'A') #解析A记录类型
  except Exception,e:
        print "dns resolver error:"+ str(e)
        return
  for i in A.response.answer:
        for j in i.items:
            iplist.append(j.address) #追加到iplist
  return True

def checkip(ip):
    checkurl=ip+":80"
    getcontent=""
    httplib.socket.setdefaulttimeout(5) #定义http连接超时时间(5秒)
    conn=httplib.HTTPConnection(checkurl) #创建http连接对象

    try:
        conn.request("GET","/",headers = {"Host": appdomain}) #发起URL请求,添加host主机头
        r=conn.getresponse()
        getcontent = r.read(15) #获取URL页面前15个字符,以便做可用性校验
    finally:
        if getcontent == "<!doctype html>": #监控URL页的内容一般是事先定义好的,比如"HTTP200"等
            print ip+" [OK]"
        else:
            print ip+" [Error]"

if __name__=="__main__":
    if get_iplist(appdomain) and len(iplist)>0:
        for ip in iplist:
            checkip(ip)
    else:
        print "DNS resolver error."

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python自动化运维

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python自动化运维

psutil库获取系统运行的进程和系统利用率[root@serverc ~]# yum -y install python2[root@serverc ~]# yum -y install python2-psutil[root@serve
2023-01-31

Python 自动化运维 IPy

1.功能 对IP进行处理的模块 2.输出一个网段内的所有IP反向解析,IP类型,IP转换网段转换strNomal(0)   无返回strNomal(1)   后缀strNomal(2)   十进制strNomal(3)   lastIPIP
2023-01-31

Python 自动化运维 nmap

1.对端口扫描,查看端口状态  2.实例import sysimport nmapscan_row = []    input_data = raw_input("PLEASE INPUT: ")scan_row = input_data.
2023-01-31

Python 自动化运维 difflib

1.功能:对比文件差异 2.对比两个字符的差异生成对比HTML格式文档,将结果输入到HTML文件,用浏览器打开单文件对比多文件对比  输出格式 ( [ 匹配 ],[ 不匹配 ],[ 错误 ] )
2023-01-31

Python 自动化运维1-Python

Python安装1.下载Python2.7源安装包:  wgethttps://www.python.org/ftp/python/2.7.12/Python-2.7.12.tar.xz2.解压安装包:  tar -zxvf Python-
2023-01-31

Python 自动化运维 XlsxWri

1.操作Excel模块  2.实例import xlsxwriterworkbook = xlsxwriter.Workbook('demol.xlsx')     ##实例一个对象worksheet = workbook.add_work
2023-01-31

Python自动化运维:Django M

QuerySet可切片使用Python 的切片语法来限制查询集记录的数目 。它等同于SQL 的LIMIT 和OFFSET 子句。>>> Entry.objects.all()[:5]      # (LIMIT 5)>>> Entry.ob
2023-01-31

Python自动化运维Django入门

随着IT运维技术日益更新,近几年运维自动化越来越火,而且学习python的人非常的火爆,尤其是python自动化运维开发,得到了很多前辈的推崇。这里我也记录一下以前学习Django的一点点心得和方法,方便以后自己查阅,如果能帮助初学者是最好
2023-01-31

Python 自动化运维3-Print输

Python语言之Print输出方法Print 输出方法:'-' 表示左对齐'+' 表示正号'0' 表示用0填充'f' 前指定一个最小宽度'.' 指定小数点后的精度格式:% [flag][width][.precision]typecode
2023-01-31

python怎么做自动化运维

这篇文章将为大家详细讲解有关python怎么做自动化运维,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。python的数据类型有哪些?python的数据类型:1. 数字类型,包括int(整型)、long(长
2023-06-14

Python自动化运维:Django之U

准备首先新建一个Django 项目django-admin startproject urlTest进入manage.py所在目录后./manage.py startapp app1./manage.py startpap app2此时我们
2023-01-31

Python自动化运维之异常处理

1、异常异常就是非正常状态,在Python中使用异常对象来表示异常。若程序在编译或运行过程中发生错误,程序的执行过程就会发生改变,抛出异常对象,程序流进入异常处理。如果异常对象没有被处理或捕捉,程序就会执行回溯(Traceback)来终止程
2023-01-31

python自动化运维的连接方法

这篇文章给大家分享的是有关python自动化运维的连接方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。python是什么意思Python是一种跨平台的、具有解释性、编译性、互动性和面向对象的脚本语言,其最初的设
2023-06-14

Golang 助力运维自动化,运维利器

运维自动化利器:golanggolang 凭借其高并发性、跨平台性和易用性,成为运维自动化的强大利器:高并发性:协程机制高效处理并发任务。跨平台性:可执行二进制文件在不同操作系统上运行。简单易用:语法简洁,上手快速。通过 golang,运维
Golang 助力运维自动化,运维利器
2024-04-08

3、python自动化运维——定制业务质

通过psutil和rrdtool模块相结合绘制网卡网络流量                                               实例代码:./cretea.py#!/usr/bin/python   import t
2023-01-31

Ansible自动化运维工具

文章目录 一.Ansible自动化运维工具介绍1.Ansible简介2.Ansible特点及优势(1)特点(2)优点 3.Ansible核心程序4.Ansible工作原理及流程 二.部署Ansible自动化运维工具1.管理
2023-08-30

python ansible自动化运维工具执行流程

目录ansible 简介ansible 任务执行ansible 配置详解ansible 常用命令ansible 常用模块ansible 简介 ansible 是什么?ansible是新出现的自动化运维工具,基于Python开发,集合了众多运
2022-06-02

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录