实用自动化运维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过滤字符串中不属于指定集合中字符的类实例
Jun 30 Python
Python读写zip压缩文件的方法
Aug 29 Python
Python解析Excle文件中的数据方法
Oct 23 Python
Python 数值区间处理_对interval 库的快速入门详解
Nov 16 Python
用python生成(动态彩色)二维码的方法(使用myqr库实现)
Jun 24 Python
python set内置函数的具体使用
Jul 02 Python
Pytorch中的VGG实现修改最后一层FC
Jan 15 Python
深入理解Tensorflow中的masking和padding
Feb 24 Python
jupyter实现重新加载模块
Apr 16 Python
使用SimpleITK读取和保存NIfTI/DICOM文件实例
Jul 01 Python
Pytorch1.5.1版本安装的方法步骤
Dec 31 Python
利用For循环遍历Python字典的三种方法实例
Mar 25 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 curl模拟post提交数据示例
2013/12/31 PHP
PHP session文件独占锁引起阻塞问题解决方法
2015/05/12 PHP
php链表用法实例分析
2015/07/09 PHP
PHP微信PC二维码登陆的实现思路
2017/07/13 PHP
PHP魔术方法之__call与__callStatic使用方法
2017/07/23 PHP
php 删除指定文件夹的实例讲解
2017/07/25 PHP
说明你的Javascript技术很烂的五个原因
2011/04/26 Javascript
javascript轻量级模板引擎juicer使用指南
2014/06/22 Javascript
jquery trigger伪造a标签的click事件取代window.open方法
2014/06/23 Javascript
Javascript 数组排序详解
2014/10/22 Javascript
jQuery实现将页面上HTML标签换成另外标签的方法
2015/06/09 Javascript
原生JS实现仿淘宝网左侧商品分类菜单效果代码
2015/09/10 Javascript
nodejs个人博客开发第四步 数据模型
2017/04/12 NodeJs
node前端模板引擎Jade之标签的基本写法
2018/05/11 Javascript
vue中使用element-ui进行表单验证的实例代码
2018/06/22 Javascript
总结javascript三元运算符知识点
2018/09/28 Javascript
Vue2.x Todo之自定义指令实现自动聚焦的方法
2019/01/08 Javascript
解决vue.js提交数组时出现数组下标的问题
2019/11/05 Javascript
通过Kettle自定义jar包供javascript使用
2020/01/29 Javascript
解决vue-router路由拦截造成死循环问题
2020/08/05 Javascript
Vue检测屏幕变化来改变不同的charts样式实例
2020/10/26 Javascript
[48:20]OpTic vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python编程实现输入某年某月某日计算出这一天是该年第几天的方法
2017/04/18 Python
浅析使用Python操作文件
2017/07/31 Python
python中字符串比较使用is、==和cmp()总结
2018/03/18 Python
python自定义函数实现最大值的输出方法
2019/07/09 Python
pip install python 快速安装模块的教程图解
2019/10/08 Python
2014年圣诞节倒计时网页的制作过程
2014/12/05 HTML / CSS
维珍澳洲航空官网:Virgin Australia
2017/09/08 全球购物
会计出纳岗位职责
2013/12/25 职场文书
中秋节活动总结
2014/08/29 职场文书
未来,这5大方向都很适合创业
2019/07/22 职场文书
vue首次渲染全过程
2021/04/21 Vue.js
Javascript中async与await的捕捉错误详解
2022/03/03 Javascript
你知道Java Spring的两种事务吗
2022/03/16 Java/Android
vue+iview实现手机号分段输入框
2022/03/25 Vue.js