python常用的运维脚本有哪些-创新互联
这篇文章给大家分享的是有关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常用的运维脚本介绍,虽然从篇幅上看很复杂,但是示例代码非常详细且容易理解,如果想了解更多相关内容,请关注创新互联行业资讯。
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
名称栏目:python常用的运维脚本有哪些-创新互联
浏览地址:http://cdiso.cn/article/iposi.html