实用自动化运维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的Collections模块中counter结构的用法
Jul 07 Python
python中defaultdict的用法详解
Jun 07 Python
Python实现KNN邻近算法
Jan 28 Python
numpy实现合并多维矩阵、list的扩展方法
May 08 Python
python常用库之NumPy和sklearn入门
Jul 11 Python
Python with语句和过程抽取思想
Dec 23 Python
python pptx复制指定页的ppt教程
Feb 14 Python
Python openpyxl 插入折线图实例
Apr 17 Python
利用python控制Autocad:pyautocad方式
Jun 01 Python
python中remove函数的踩坑记录
Jan 04 Python
Python包管理工具pip的15 个使用小技巧
May 17 Python
Elasticsearch 批量操作
Apr 19 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
PHP中使用imagick生成PSD文件缩略图教程
2015/01/26 PHP
thinkPHP分组后模板无法加载问题解决方法
2016/07/12 PHP
PHP基于反射机制实现插件的可插拔设计详解
2016/11/10 PHP
thinkPHP实现多字段模糊匹配查询的方法
2016/12/01 PHP
用Javascript做flash做的事..才完成的一个类.Auntion Action var 0.1
2007/02/23 Javascript
超棒的javascript页面顶部卷动广告效果
2007/12/01 Javascript
javascript 处理事件绑定的一些兼容写法
2009/12/24 Javascript
jQuery AJAX 调用WebService实现代码
2010/03/24 Javascript
display和visibility的区别示例介绍
2014/02/26 Javascript
AngularJS实现按钮提示与点击变色效果
2016/09/07 Javascript
AngularJS 表达式详解及实例代码
2016/09/14 Javascript
Linux使用Node.js建立访问静态网页的服务实例详解
2017/03/21 Javascript
基于JavaScript实现移动端无限加载分页
2017/03/27 Javascript
js下载文件并修改文件名
2017/05/08 Javascript
解决Extjs下拉框不显示的问题
2017/06/21 Javascript
vue.js在标签属性中插入变量参数的方法
2018/03/06 Javascript
详解vue-property-decorator使用手册
2019/07/29 Javascript
python调用Moxa PCOMM Lite通过串口Ymodem协议实现发送文件
2014/08/15 Python
Python的网络编程库Gevent的安装及使用技巧
2016/06/24 Python
python2.7安装图文教程
2018/03/13 Python
python实现数独游戏 java简单实现数独游戏
2018/03/30 Python
python使用selenium实现批量文件下载
2019/03/11 Python
如何在Django配置文件里配置session链接
2019/08/06 Python
Django实现CAS+OAuth2的方法示例
2019/10/30 Python
Python-jenkins 获取job构建信息方式
2020/05/12 Python
利用Opencv实现图片的油画特效实例
2021/02/28 Python
html5 video全屏播放/自动播放的实现示例
2020/08/06 HTML / CSS
护理工作感言
2014/01/16 职场文书
2014元旦晚会策划方案
2014/02/19 职场文书
水毁工程实施方案
2014/04/01 职场文书
任命书格式
2014/06/05 职场文书
五一促销活动总结
2014/07/01 职场文书
师德师风自我评价范文
2014/09/11 职场文书
升学宴来宾致辞
2015/07/27 职场文书
Golang 正则匹配效率详解
2021/04/25 Golang
如何解决springcloud feign 首次调用100%失败的问题
2021/06/23 Java/Android