实用自动化运维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之print详解
Sep 28 Python
Python生成器定义与简单用法实例分析
Apr 30 Python
Python实现的求解最大公约数算法示例
May 03 Python
django进阶之cookie和session的使用示例
Aug 17 Python
Python判断一个list中是否包含另一个list全部元素的方法分析
Dec 24 Python
Python编程在flask中模拟进行Restful的CRUD操作
Dec 28 Python
浅谈python常用程序算法
Mar 22 Python
使用selenium和pyquery爬取京东商品列表过程解析
Aug 15 Python
Python如何实现动态数组
Nov 02 Python
Django通过dwebsocket实现websocket的例子
Nov 15 Python
利用Python将多张图片合成视频的实现
Nov 23 Python
python+pyhyper实现识别图片中的车牌号思路详解
Dec 24 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
浅析ThinkPHP缓存之快速缓存(F方法)和动态缓存(S方法)(日常整理)
2015/10/26 PHP
PHP类的自动加载机制实现方法分析
2019/01/10 PHP
PHP-FPM 设置多pool及配置文件重写操作示例
2019/10/02 PHP
PHP7 整型处理机制修改
2021/03/09 PHP
兼容多浏览器的iframe自适应高度(ie8 、谷歌浏览器4.0和 firefox3.5.3)
2009/11/04 Javascript
JavaScript 学习笔记(五)
2009/12/31 Javascript
js算法中的排序、数组去重详细概述
2013/10/14 Javascript
js修改原型的属性使用介绍
2014/01/26 Javascript
深入理解JavaScript系列(26):设计模式之构造函数模式详解
2015/03/03 Javascript
JQuery选中checkbox方法代码实例(全选、反选、全不选)
2015/04/27 Javascript
js实现表单多按钮提交action的处理方法
2015/10/24 Javascript
Mac下使用charles遇到的问题以及解决办法
2017/01/10 Javascript
jQuery手风琴的简单制作
2017/05/12 jQuery
H5实现仿flash效果的实现代码
2017/09/29 Javascript
基于wordpress的ajax写法详解
2018/01/02 Javascript
jQuery zTree插件使用简单教程
2019/08/16 jQuery
微信小程序可滑动月日历组件使用详解
2019/10/21 Javascript
vue keep-alive 动态删除组件缓存的例子
2019/11/04 Javascript
详解js location.href和window.open的几种用法和区别
2019/12/02 Javascript
ES6 Generator基本使用方法示例
2020/06/06 Javascript
echarts柱状图背景重叠组合而非并列的实现代码
2020/12/10 Javascript
Vue+scss白天和夜间模式切换功能的实现方法
2021/01/05 Vue.js
vue监听键盘事件的相关总结
2021/01/29 Vue.js
Python设计模式之抽象工厂模式
2016/08/25 Python
python3中函数参数的四种简单用法
2018/07/09 Python
Python 用三行代码提取PDF表格数据
2019/10/13 Python
Python实现鼠标自动在屏幕上随机移动功能
2020/03/14 Python
Python3爬虫里关于Splash负载均衡配置详解
2020/07/10 Python
Html5嵌入钉钉的实现示例
2020/06/04 HTML / CSS
Canvas获取视频第一帧缩略图的实现
2020/11/11 HTML / CSS
俄罗斯最大的消费电子连锁零售商:Mvideo
2017/06/25 全球购物
土建专业毕业生自荐书
2014/07/04 职场文书
乒乓球兴趣小组活动总结
2014/07/08 职场文书
2014年纪委工作总结
2014/12/05 职场文书
2016优秀教师先进个人事迹材料
2016/02/25 职场文书
python套接字socket通信
2022/04/01 Python