实用自动化运维Python脚本分享

  • 更新时间:2022-07-06 22:27:07
  • 编辑:曹逸仙
这篇文章主要介绍了关于实用自动化运维Python脚本分享,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

 

并行发送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脚本在Linux下如何自启动与定时任务的实例详解

分享在IIS上用CGI方式运行Python脚本的实例教程

 

 

以上就是实用自动化运维Python脚本分享的详细内容,更多请关注码农之家其它相关文章!

相关教程

  • python 3.6 +pyMysql 操作mysql数据库的实例分享

    下面小编就为大家分享一篇python 3.6 +pyMysql 操作mysql数据库的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    发布时间:2020-02-13

  • python获取图片分辨率的方法

    今天小编就为大家分享一篇python 获取图片分辨率的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    发布时间:2021-04-13

  • Python openpyxl遍历所有sheet查找特定字符串的实例方法

    今天小编就为大家分享一篇Python openpyxl 遍历所有sheet 查找特定字符串的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    发布时间:2019-11-25

  • python中pass的实例用法

    在本篇内容里我们给读者们分享了关于python中pass的作用以及相关实例代码,有需要的朋友们学习下。

    发布时间:2020-03-30

  • Python的Scrapy框架爬取图片实例详解

    Scrapy是一个使用Python编写的,轻量级的,简单轻巧,并且使用起来非常的方便。使用Scrapy可以很方便的完成网上数据的采集工作,它为我们完成了大量的工作,而不需要自己费大力气去开发。本

    发布时间:2020-07-10

  • Python二元算术运算常用方法解析

    这篇文章主要介绍了Python二元算术运算常用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    发布时间:2021-04-18

  • python存储16bit和32bit图像的代码讲解

    今天小编就为大家分享一篇python存储16bit和32bit图像的实例,具有的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    发布时间:2020-02-03

  • 详解python scatter散点图用循环分类法加图例

    这篇文章主要为大家详细介绍了python scatter散点图用循环分类法加图例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    发布时间:2020-01-20

  • python Django 创建应用过程

    这篇文章主要介绍了python Django 创建应用过程图示详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    发布时间:2020-08-01

  • Python自定义函数与Python函数返回值详解

    函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。

    发布时间:2019-10-24

用户留言