python常用的运维脚本有哪些
admin
2023-01-24 03:40:48
0

这篇文章给大家分享的是有关python常用的运维脚本的介绍,小编觉得挺实用的,因此分享给大家学习,话不多说,一起往下看吧。

1.获取外网ip

#!/usr/bin/env python
-*- coding:utf-8 -*-
Time: 2019/12/20  10:05
import socket
import requests,re
#方法一
text=requests.get("http://txt.go.sohu.com/ip/soip").text
ip=re.findall(r'\d+.\d+.\d+.\d+',text)
#方法二
ipqwb = socket.getaddrinfo('www.baidu.com', 'http') #获取指定域名的A记录
nowIp = (ipqwb[0][4][0])    # 赋值
print("本机外网IP: " + ip[0])
print("qwb    IP: " + nowIp)

2.生成随机密码:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Time: 2019/11/21  11:43
import random,string
def passwd():
    src = string.ascii_letters + string.digits
    count = input('请确认要生成几条密码: ')
    list_passwds = []
    for i in range(int(count)):
        #密码位数为N+3,例如下面就是5+3=8位密码
        list_passwd_all = random.sample(src, 5) #从字母和数字中随机取5位
        list_passwd_all.extend(random.sample(string.digits, 1))  #让密码中一定包含数字
        list_passwd_all.extend(random.sample(string.ascii_lowercase, 1)) #让密码中一定包含小写字母
        list_passwd_all.extend(random.sample(string.ascii_uppercase, 1)) #让密码中一定包含大写字母
        random.shuffle(list_passwd_all) #打乱列表顺序
        str_passwd = ''.join(list_passwd_all) #将列表转化为字符串
        if str_passwd not in list_passwds: #判断是否生成重复密码
            list_passwds.append(str_passwd)
        print(list_passwds[i])
    #print(list_passwds)
passwd()

3.发送邮件:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Time: 2019/11/15  17:18
import smtplib
from email.mime.text import MIMEText
from time import sleep
from email.header import Header
host = 'smtp.163.com'
port = 25
sender = 'xxxx@163.com'
pwd = 'xxxxx'
receiver = ['22222222@qq.com', 'xxxxxxxx@163.com']  # 可以不用添加自己的邮箱,添加为了防止系统认为是垃圾邮箱发送失败会报错
body = '邮件内容'
title = '邮件标题'
def sentemail():
    msg = MIMEText(body, 'plain', 'utf-8')
    msg['subject'] = Header(title, 'utf-8').encode()
    msg['from'] = sender
    msg['to'] = ','.join(receiver)
    try:
        s = smtplib.SMTP(host, port)
        s.login(sender, pwd)
        s.sendmail(sender, receiver, msg.as_string())
        print ('Done.sent email success')
    except smtplib.SMTPException as e:
        print ('Error.sent email fail')
        print (e)
if __name__ == '__main__':
    sentemail()

4.基础log日志配置:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Time: 2019/11/27  13:04
import logging
def logger():
    logger=logging.getLogger()

    fh=logging.FileHandler("test.log")     #向文件中发送内容,有自己默认的日志格式
    ch=logging.StreamHandler()             #向屏幕发送文件,有自己默认的日志格式

    fm=logging.Formatter("%(asctime)s %(message)s")  #定义自己的日志格式
    fh.setFormatter(fm)                    #添加自定义的日志格式,如果不添加会用自己默认的日志格式
    ch.setFormatter(fm)

    logger.addHandler(fh)          #显示出fh,ch的日志
    logger.addHandler(ch)
    logger.setLevel("DEBUG")       #定义日志级别
    return logger                  # 返回函数对象

logger=logger()                     #调用函数

logger.debug("hello 1")            #打印日志
logger.info("hello 2")
logger.warning("hello 3")
logger.error("hello 4")
logger.critical("hello 5")

5.查看本地端口是否开放:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Time: 2019/11/21  11:05
import socket

port_number = [135,443,80,3306,22]

for index in port_number:
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    result = sock.connect_ex(('127.0.0.1', index))
    if result == 0:
        print("Port %d is open" % index)
    else:
        print("Port %d is not open" % index)
    sock.close()

6.装饰器调用一次使函数执行5次

#!/usr/bin/env python
-*- coding:utf-8 -*-
def again_func(func):

    def inner(*args, **kwargs):
        for line in range(5):
            func(*args, **kwargs)

    return inner
@again_func
def func1():
    print("from func1...")
func1()

7.可变参数定义*args, **kwargs的区别

#!/usr/bin/env python
-*- coding:utf-8 -*-
def foo(*args, **kwargs):
    print("args=:", args)
    print("kwargs=:", kwargs)
    print("-------------")

if __name__ == '__main__':
    foo(1,2,3)
    foo(a=1, b=2, c=3)
    foo(1,2,3,a=1,b=2,c=3)

以上便是python常用的运维脚本介绍,虽然从篇幅上看很复杂,但是示例代码非常详细且容易理解,如果想了解更多相关内容,请关注行业资讯。

相关内容

热门资讯

德国总理:美国正在被伊朗羞辱 德国之声4月27日报道,德国总理默茨在访问一所学校时表示,在当前的持续冲突中,伊朗领导层正试图羞辱美...
理响中国|“长”歌以行,风云激... 光阴如梭,东方潮阔。这里是中国的长三角,世界的长三角。无论过去、现在还是未来,这片土地都因时代而生,...
白宫:特朗普及其国安团队开会讨... 新华社华盛顿4月27日电 美国白宫新闻秘书莱维特27日在记者会上证实,总统特朗普及其国家安全团队当天...
人民日报刊文:日本放开杀伤性武... 日本放开杀伤性武器出口推高地缘冲突风险(国际论坛)常思纯《人民日报》(2026年04月28日 第 0...
医疗保障法草案二审:明确生育保... 满足多样化健康保障需求本报记者 彭 波4月27日,医疗保障法草案二审稿提请十四届全国人大常委会第二十...
天津一景区发生自转旋翼机事故1... 澎湃新闻记者 吕新文中国民用航空华北地区管理局4月22日公布《豪客通航“10•1”天津长芦汉盐旅游区...
卡塔尔埃米尔与美国总统特朗普通... 当地时间24日,卡塔尔埃米尔塔米姆与美国总统特朗普通电话,重点就中东地区局势以及伊朗与美国谈判问题交...
男子30年前被扣押2859克黄... 澎湃新闻记者 王鑫家住辽宁省大连市的潘永嘉近日向澎湃新闻反映称,三十年前,他在大连周水子机场被盖州市...
商务部:取消反制欧盟两家金融机... 中华人民共和国商务部令二〇二六年 第1号鉴于欧盟已取消对中国两家金融机构的制裁措施,现公布《关于取消...
过去24小时共有5艘船只通过霍... 总台记者当地时间24日获悉,过去24小时内,共有5艘船只通过霍尔木兹海峡,其中包括一艘伊朗油轮。(总...