实用自动化运维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的pandas框架操作Excel文件中的数据教程
Mar 31 Python
python中argparse模块用法实例详解
Jun 03 Python
简介Python的collections模块中defaultdict类型的用法
Jul 07 Python
PyQt实现界面翻转切换效果
Apr 20 Python
Python多重继承的方法解析执行顺序实例分析
May 26 Python
Opencv实现抠图背景图替换功能
May 21 Python
Python中一些深不见底的“坑”
Jun 12 Python
python实现websocket的客户端压力测试
Jun 25 Python
Python实现自定义读写分离代码实例
Nov 16 Python
python tkiner实现 一个小小的图片翻页功能的示例代码
Jun 24 Python
Django框架实现在线考试系统的示例代码
Nov 30 Python
基于Python实现一个春节倒计时脚本
Jan 22 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基础知识:控制结构
2006/12/13 PHP
php str_pad() 将字符串填充成指定长度的字符串
2010/02/23 PHP
日常整理PHP中简单的图形处理(经典)
2015/10/26 PHP
php格式化json函数示例代码
2016/05/12 PHP
PHP多进程编程总结(推荐)
2016/07/18 PHP
thinkPHP自动验证、自动添加及表单错误问题分析
2016/10/17 PHP
dwr spring的集成实现代码
2009/03/22 Javascript
中国地区三级联动下拉菜单效果分析
2012/11/15 Javascript
通过上下左右键和回车键切换光标实现代码
2013/03/08 Javascript
js showModalDialog弹出窗口实例详解
2014/01/07 Javascript
不同编码的页面表单数据乱码问题解决方法
2015/02/15 Javascript
js+css实现超简洁的二级下拉菜单效果代码
2015/09/07 Javascript
JavaScript中Date对象的常用方法示例
2015/10/24 Javascript
javaScript实现可缩放的显示区效果代码
2015/10/26 Javascript
jquery实现页面常用的返回顶部效果
2016/03/04 Javascript
zTree jQuery 树插件的使用(实例讲解)
2017/09/25 jQuery
JS实现的3des+base64加密解密算法完整示例
2018/05/18 Javascript
使用js实现一个简单的滚动条过程解析
2019/09/10 Javascript
js观察者模式的弹幕案例
2020/11/23 Javascript
jQuery实现动态操作table行
2020/11/23 jQuery
vue3+typeScript穿梭框的实现示例
2020/12/29 Vue.js
[09:13]2014DOTA2国际邀请赛 中国区预选赛coser表演
2014/05/23 DOTA
[00:59]DOTA2英雄背景故事——上古巨神
2020/06/28 DOTA
决策树的python实现方法
2014/11/18 Python
python中将函数赋值给变量时需要注意的一些问题
2017/08/18 Python
Python实现桶排序与快速排序算法结合应用示例
2017/11/22 Python
解决Python获取字典dict中不存在的值时出错问题
2018/10/17 Python
如何在mac环境中用python处理protobuf
2019/12/25 Python
在TensorFlow中屏蔽warning的方式
2020/02/04 Python
丝芙兰中国官方商城:SEPHORA中国
2018/01/10 全球购物
民主生活会对照检查材料(统计局)
2014/09/21 职场文书
护士长2014年终工作总结
2014/11/11 职场文书
大学生个人学习总结
2015/02/15 职场文书
大学迎新生欢迎词
2015/09/29 职场文书
初一英语教学反思
2016/02/15 职场文书
Python3.8官网文档之类的基础语法阅读
2021/09/04 Python