实用自动化运维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脚本生成Android SALT扰码的方法
Sep 18 Python
使用Python实现一个简单的项目监控
Mar 31 Python
Python文件去除注释的方法
May 25 Python
Python实现曲线点抽稀算法的示例
Oct 12 Python
OpenCV+Python识别车牌和字符分割的实现
Jan 31 Python
Python3.5面向对象与继承图文实例详解
Apr 24 Python
django的model操作汇整详解
Jul 26 Python
python读取csv文件指定行的2种方法详解
Feb 13 Python
Python动态导入模块:__import__、importlib、动态导入的使用场景实例分析
Mar 30 Python
PIP和conda 更换国内安装源的方法步骤
Sep 21 Python
Django 用户认证Auth组件的使用
Nov 30 Python
python批量创建变量并赋值操作
Jun 03 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下将XML转换为数组
2010/01/01 PHP
利用php+mysql来做一个功能强大的在线计算器
2010/10/12 PHP
PHP开发中四种查询返回结果分析
2011/01/02 PHP
Jquery显示、隐藏元素以及添加删除样式
2013/08/09 Javascript
jQuery.position()方法获取不到值的安全替换方法
2015/03/13 Javascript
jQuery实现动态添加和删除一个div
2015/08/12 Javascript
javascript日期格式化方法汇总
2015/10/04 Javascript
原生javascript实现addClass,removeClass,hasClass函数
2016/02/25 Javascript
vue组件实例解析
2017/01/10 Javascript
React进阶学习之组件的解耦之道
2017/08/07 Javascript
js定时器+简单的动画效果实例
2017/11/10 Javascript
jquery中ajax请求后台数据成功后既不执行success也不执行error的完美解决方法
2017/12/24 jQuery
nodejs基于mssql模块连接sqlserver数据库的简单封装操作示例
2018/01/05 NodeJs
[02:38]DOTA2亚洲邀请赛 IG战队巡礼
2015/02/03 DOTA
[00:11]战神迅矛
2019/03/06 DOTA
python使用reportlab画图示例(含中文汉字)
2013/12/03 Python
初步理解Python进程的信号通讯
2015/04/09 Python
利用python实现xml与数据库读取转换的方法
2017/06/17 Python
python 除法保留两位小数点的方法
2018/07/16 Python
pandas pivot_table() 按日期分多列数据的方法
2018/11/16 Python
Python笔记之观察者模式
2019/11/20 Python
python文件绝对路径写法介绍(windows)
2019/12/25 Python
使用TensorFlow对图像进行随机旋转的实现示例
2020/01/20 Python
在django中使用post方法时,需要增加csrftoken的例子
2020/03/13 Python
python 基于DDT实现数据驱动测试
2021/02/18 Python
phpquery中文手册
2021/03/18 PHP
Steve Madden官网:美国鞋类品牌
2017/01/29 全球购物
存储过程的优点有哪些
2012/09/27 面试题
年终自我鉴定
2013/10/09 职场文书
国庆节文艺活动方案
2014/02/03 职场文书
《都江堰》教学反思
2014/02/07 职场文书
培训专员岗位职责
2014/02/26 职场文书
化工实习心得体会
2014/09/09 职场文书
2014年教育实习工作总结
2014/11/22 职场文书
办公室主任岗位职责范本
2015/03/31 职场文书
关于windows server 2012 DC 环境 重启后蓝屏代码:0xc00002e2的问题
2022/05/25 Servers