实用自动化运维Python脚本分享


Posted in Python onJune 04, 2018

并行发送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以及邮件的签名,还有发件人为定值,需要自己修改。

以上这篇实用自动化运维Python脚本分享就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
打印出python 当前全局变量和入口参数的所有属性
Jul 01 Python
Ruby使用eventmachine为HTTP服务器添加文件下载功能
Apr 20 Python
Python封装原理与实现方法详解
Aug 28 Python
关于python之字典的嵌套,递归调用方法
Jan 21 Python
python3.6使用tkinter实现弹跳小球游戏
May 09 Python
python 随机森林算法及其优化详解
Jul 11 Python
python实现日志按天分割
Jul 22 Python
pytorch多GPU并行运算的实现
Sep 27 Python
wxPython实现列表增删改查功能
Nov 19 Python
Python实现计算图像RGB均值方式
Jun 04 Python
python求numpy中array按列非零元素的平均值案例
Jun 08 Python
Python字符串split及rsplit方法原理详解
Jun 29 Python
python中验证码连通域分割的方法详解
Jun 04 #Python
python 匹配url中是否存在IP地址的方法
Jun 04 #Python
Python实现ping指定IP的示例
Jun 04 #Python
用Python3创建httpServer的简单方法
Jun 04 #Python
Python3之简单搭建自带服务器的实例讲解
Jun 04 #Python
Python闭包执行时值的传递方式实例分析
Jun 04 #Python
利用Python实现在同一网络中的本地文件共享方法
Jun 04 #Python
You might like
JQuery入门——移除绑定事件unbind方法概述及应用
2013/02/05 Javascript
jQuery$命名冲突怎么办如何解决
2014/01/16 Javascript
js事件绑定快捷键以ctrl+k为例
2014/09/30 Javascript
javascript 面向对象封装与继承
2014/11/27 Javascript
javascript检测flash插件是否被禁用的方法
2016/01/14 Javascript
基于jQuery实现的幻灯图片切换
2016/12/02 Javascript
完美解决浏览器跨域的几种方法(汇总)
2017/05/08 Javascript
JQueryMiniUI按照时间进行查询的实现方法
2017/06/07 jQuery
js学习总结之DOM2兼容处理重复问题的解决方法
2017/07/27 Javascript
angularJs-$http实现百度搜索时的动态下拉框示例
2018/02/27 Javascript
VUE+Element环境搭建与安装的方法步骤
2019/01/24 Javascript
如何实现小程序tab栏下划线动画效果
2019/05/18 Javascript
layui问题之自动滚动二级iframe页面到指定位置的方法
2019/09/18 Javascript
vue实现百度语音合成的实例讲解
2019/10/14 Javascript
解决VUE自定义拖拽指令时 onmouseup 与 click事件冲突问题
2020/07/24 Javascript
django 自定义用户user模型的三种方法
2014/11/18 Python
如何处理Python3.4 使用pymssql 乱码问题
2016/01/08 Python
Python列表推导式与生成器用法分析
2018/08/02 Python
选择python进行数据分析的理由和优势
2019/06/25 Python
python 命令行传入参数实现解析
2019/08/30 Python
python/Matplotlib绘制复变函数图像教程
2019/11/21 Python
Pytorch之Variable的用法
2019/12/31 Python
python中安装django模块的方法
2020/03/12 Python
详解Python IO口多路复用
2020/06/17 Python
python求解汉诺塔游戏
2020/07/09 Python
Python 删除List元素的三种方法remove、pop、del
2020/11/16 Python
韩国保养品、日本药妆购物网:小三美日
2018/12/30 全球购物
求职者应聘的自我评价
2013/10/16 职场文书
大专生自我评价
2014/01/28 职场文书
《地震中的父与子》教学反思
2014/04/10 职场文书
2014教师党员自我评议(5篇)
2014/09/20 职场文书
上班时间打瞌睡检讨书
2014/09/26 职场文书
2015年学生会干事工作总结
2015/04/09 职场文书
2016年寒假政治学习心得体会
2015/10/09 职场文书
MySQL 存储过程的优缺点分析
2021/05/20 MySQL
Python实现科学占卜 让视频自动打码
2022/04/09 Python