实用自动化运维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登陆asp网站页面的实现代码
Jan 14 Python
介绍Python的Urllib库的一些高级用法
Apr 30 Python
通过数据库对Django进行删除字段和删除模型的操作
Jul 21 Python
python opencv之分水岭算法示例
Feb 24 Python
Python使用matplotlib实现基础绘图功能示例
Jul 03 Python
解决pyinstaller打包exe文件出现命令窗口一闪而过的问题
Oct 31 Python
使用python实现哈希表、字典、集合操作
Dec 22 Python
Python序列化pickle模块使用详解
Mar 05 Python
keras 解决加载lstm+crf模型出错的问题
Jun 10 Python
Python grpc超时机制代码示例
Sep 14 Python
Django路由层URLconf作用及原理解析
Sep 24 Python
python函数的两种嵌套方法使用
Apr 02 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随机数 C扩展随机数
2016/05/04 PHP
关于PHP求解三数之和问题详析
2020/11/09 PHP
学习ExtJS Column布局
2009/10/08 Javascript
jQuery 动态酷效果实现总结
2009/12/27 Javascript
JavaScript面向对象编程入门教程
2014/04/16 Javascript
使用jquery选择器如何获取父级元素、同级元素、子元素
2014/05/14 Javascript
JS+CSS实现淡入式焦点图片幻灯切换效果的方法
2015/02/26 Javascript
nodejs实现获取当前url地址及url各种参数值
2015/06/25 NodeJs
JavaScript ES6的新特性使用新方法定义Class
2016/06/28 Javascript
AngularJS 工作原理详解
2016/08/18 Javascript
浅谈Web页面向后台提交数据的方式和选择
2016/09/23 Javascript
bootstrap-datetimepicker实现只显示到日期的方法
2016/11/25 Javascript
用最少的JS代码写出贪吃蛇游戏
2018/01/12 Javascript
浅谈vue同一页面中拥有两个表单时,的验证问题
2018/09/18 Javascript
实用的Vue开发技巧
2019/05/30 Javascript
详解vue-flickity的fullScreen功能实现
2020/04/07 Javascript
.netcore+vue 实现压缩文件下载功能
2020/09/24 Javascript
[42:34]VP vs VG 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
Python2与python3中 for 循环语句基础与实例分析
2017/11/20 Python
Python3中内置类型bytes和str用法及byte和string之间各种编码转换 问题
2018/09/27 Python
Win系统PyQt5安装和使用教程
2019/12/25 Python
Django设置Postgresql的操作
2020/05/14 Python
Python爬虫获取op.gg英雄联盟英雄对位胜率的源码
2021/01/29 Python
python 第三方库paramiko的常用方式
2021/02/20 Python
趣天网日本站:Qoo10 JP
2019/09/18 全球购物
计算机专业优秀大学生自我总结
2014/01/21 职场文书
大一新生学期自我评价
2014/04/09 职场文书
教师演讲稿大全
2014/05/16 职场文书
集中采购方案
2014/06/10 职场文书
学习教师法的心得体会
2014/09/03 职场文书
2014年食堂工作总结
2014/11/20 职场文书
周年庆典答谢词
2015/01/20 职场文书
2015年护士医德医风自我评价
2015/03/03 职场文书
2015年幼儿园后勤工作总结
2015/04/25 职场文书
《异世界四重奏》剧场版6月10日上映 PV视觉图原创角色发表
2022/03/20 日漫
python lambda 表达式形式分析
2022/04/03 Python