实用自动化运维Python脚本分享
作者:renfengjun 发布时间:2022-05-23 20:26:57
标签:python,自动化,运维
并行发送sh命令
pbsh.py
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import paramiko
import sys
import threading
#Copy local file to remote server.
def sshclient_scp(hostname, port, username, password, local_path, remote_path):
t = paramiko.Transport((hostname, port))
t.connect(username=username, password=password) # 登录远程服务器
sftp = paramiko.SFTPClient.from_transport(t) # sftp传输协议
sftp.put(local_path, remote_path)
t.close()
def sshclient_scp_get(hostname, port, username, password, remote_path, local_path):
t = paramiko.Transport((hostname, port))
t.connect(username=username, password=password) # 登录远程服务器
sftp = paramiko.SFTPClient.from_transport(t) # sftp传输协议
sftp.get(remote_path, local_path)
t.close()
def sshclient_execmd(hostname, port, username, password, execmd):
paramiko.util.log_to_file("paramiko.log")
s = paramiko.SSHClient()
s.set_missing_host_key_policy(paramiko.AutoAddPolicy())
s.connect(hostname=hostname, port=port, username=username, password=password)
stdin, stdout, stderr = s.exec_command(execmd)
stdin.write("Y") # Generally speaking, the first connection, need a simple interaction.
line=stdout.read()
s.close()
print (hostname+":")
print line
try:
file_name = sys.argv[1]
cmd= sys.argv[2]
except IndexError:
print 'Wrong params!'
print 'Usage :'
print ' batch.py "$OS_LIST_FILE" "$BATCH_EXECUTE_CMD"'
print 'cat oslist.txt:'
print '192.168.0.1,22,oracle,passwd1'
print '192.168.0.2,22,oracle,passwd1'
print '192.168.0.3,24,oracle,passwd1'
print 'Format is :'
print 'IPADDR,SSHPORT,USERNAME,PASSWORD'
print 'Examples of usage:'
print './batch.py "/root/workspace/oslist.txt" "df -h"'
sys.exit()
#file_name = sys.argv[1]
#cmd= sys.argv[2]
#maintenance_osinfo
with open(file_name) as file_object:
for line in file_object:
splits_str = line.rstrip().split(',')
a=threading.Thread(target=sshclient_execmd,args=(splits_str[0],int(splits_str[1]),splits_str[2],splits_str[3],cmd))
a.start()
#print sshclient_execmd(splits_str[0],int(splits_str[1]),splits_str[2],splits_str[3],cmd)
# print sshclient_scp(splits_str[0], int(splits_str[1]), splits_str[2], splits_str[3], file_name, splits_str[4]+file_name)
python发送邮件
sendmail.py
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import smtplib
import email.MIMEMultipart
import email.MIMEText
import email.MIMEBase
import sys
#from email.mime.application import MIMEApplication
#import os.path
def sendmail(f_from, f_to, f_cclist, alert_info, f_subject):
From = f_from
To = f_to
#file_name = f_file_name
server = smtplib.SMTP("smtp.xxxx.com.cn")
server.login("xxxx","xxxx")
#构造MIMEMultipart对象做为根容器
main_msg = email.MIMEMultipart.MIMEMultipart()
text_msg = email.MIMEText.MIMEText("您好。<br><br><br><br>"
+ alert_info.title() +
"<br>任凤军 <br>"
"xx技术股份有限公司 <br>"
"手机: xx<br>"
"座机:xxx<br>"
"邮箱:xxxx@xx.com<br>"
"地址:xxxx<br>"
"邮编:130011<br>"
"===================================<br>"
"",'HTML','utf-8')
main_msg.attach(text_msg)
#xlsxpart = MIMEApplication(open(file_name, 'rb').read())
#xlsxpart.add_header('Content-Disposition', 'attachment', filename=f_subject+".docx")
#main_msg.attach(xlsxpart)
# 设置根容器属性
main_msg['From'] = From
main_msg['To'] = To
main_msg['Cc'] = ",".join(f_cclist)
main_msg['Subject'] = f_subject
main_msg['Date'] = email.Utils.formatdate()
#f_cclist为完整的需要接收邮件的列表,原本只存放抄送列表,这里需要添加上收件人
f_cclist.append(To)
# 得到格式化后的完整文本
fullText = main_msg.as_string()
# 用smtp发送邮件
try:
server.sendmail(From, f_cclist, fullText)
finally:
server.quit()
if __name__ == "__main__":
#sys.setdefaultencoding('utf-8')
message= [
'Usage:',
' sendmail.py "topic" "mail body text" "mail to"',
'Examples of usage:',
' sendmail.py "topic" "hello world" "14638852@qq.com"',
]
try:
topic = str(sys.argv[1]).encode("utf-8")
alert = str(sys.argv[2]).encode("utf-8")
mailto = str(sys.argv[3]).encode("utf-8")
except IndexError:
for line in message:
print line+'\n'
sys.exit()
cclist=[]
#clist =[]
sendmail("xxxx@xxx",mailto,cclist,alert, topic)
备注:
sendmail("xxxx@gmail.com",mailto,cclist,alert, topic)
发件人,收件人,抄送列表,正文内容,邮件标题
Usage:
sendmail.py "topic" "mail body text" "mail to"
Examples of usage:
sendmail.py "topic" "hello world" "14638852@qq.com"
./sendmail.py "topic" "hello world" "14638852@qq.com"
smtp以及邮件的签名,还有发件人为定值,需要自己修改。
来源:https://blog.csdn.net/renfengjun/article/details/78661324


猜你喜欢
- 1、我们使用正常的输出语句得到的是(输出结果:division by zero)虽然得到了错误的日志输出,但是不知道为什么出错,也不能定位具
- 最近的uniapp开发中遇到了H5调微信授权登录的业务,记录一下解决方法微信授权微信授权分为两种类型:静默授权:scope=snsapi_b
- 如何自动下载所有依赖包?大部分情况下大家下载 Go 项目都是使用go get命令,它除了会下载指定的项目代码,还会去下载这个项目所依赖的所有
- 不知道算不算DW4的大BUG. DW4实际的运行如下: 读注册表中HKEY_CURRENT_USER/
- profile是什么当我们要对某一条sql的性能进行分析时,可以使用它。Profiling是从 mysql5.0.3版本以后才开放的。启动p
- 这是一条颠覆常规的插入方法,一条INSERT语句可以完成向多张表的插入任务。小小地展示一下这种插入方法。1.创建表T并初始化测试数据,此表作
- 目录1. 术语说明2. 简单字段名2.1 简单字段名的说明2.2 省略字段名2.3 数字形式的简单字段名2.4 变量名形式的简单字段名2.5
- 一.背景在现在的网站中,接入的渠道是越来越多了,技术也是越来越先进,WAP, SMS,EMAIL, 传统的Web, Socket等等,如果连
- 今天闲来无聊无意间看到了百度股票,就想着用python爬一下数据,于是就找到了东方财经网,结合这两个网站,写了一个小爬虫,数据保存在文件中,
- 最近几年,jupyter在全球数据科学领域,已经成为不可或缺的重要工具。在jupyter中用python写程序,若import了自己写的外部
- sql中经常用like进行模糊查询,而模糊查询就要用到百分号“%”,下划线“_”这些通配符,其中“%”匹配任意多个字符,“_”匹配单个字符。
- 1. 列表使用sum, 如下代码,对1维列表和二维列表,numpy.sum(a)都能将列表a中的所有元素求和并返回,a.sum()用法是非法
- 你好,%用户名%!我叫Alex,我在机器学习和网络图分析(主要是理论)有所涉猎。我同时在为一家俄罗斯移动运营商开发大数据产品。这是我第一次在
- 目录一、IDEA如何连接数据库第一种方法:直接在方法体中增加连接信息方法二:二、方法代码的实现1.快递员增加快递2.快递员删除快递用数据库编
- 1、前言前面讲到unittest里面setUp可以在每次执行用例前执行,这样有效的减少了代码量,但是有个弊端,比如打开浏览器操作,每次执行用
- 由于存在函数内部不能访问全局作用的,所以就需要一种可以引入上一级作用域的语法结构,可以通过use使用函数声明时所在作用域的变量的值。php的
- 前言在Python中已经内置了一个smtp邮件发送模块,Django在此基础上进行了简单地封装,让我们在Django环境中可以更方便更灵活的
- 本文介绍了tensorflow中next_batch的具体使用,分享给大家,具体如下:此处给出了几种不同的next_batch方法,该文章只
- 问题描述项目中需要用到流程图,如果用js的echarts处理,不同层级建动态计算位置比较复杂,考虑用python来实现测试demo实现效果如
- //我修改之,能正常运行,测试环境为mysql5.0,xp //关键是设置对字符集,设置gbk,gb2312测试通过,utf8测试未通过 /