Home  >  Article  >  Backend Development  >  Practical automated operation and maintenance Python script sharing

Practical automated operation and maintenance Python script sharing

不言
不言Original
2018-06-04 11:13:433732browse

This article mainly introduces the sharing of practical automated operation and maintenance Python scripts. It has certain reference value. Now I share it with everyone. Friends in need can refer to it

Send sh commands in parallel

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)

pythonSend The email

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>"
          "",&#39;HTML&#39;,&#39;utf-8&#39;)
 main_msg.attach(text_msg)
 #xlsxpart = MIMEApplication(open(file_name, &#39;rb&#39;).read())
 #xlsxpart.add_header(&#39;Content-Disposition&#39;, &#39;attachment&#39;, filename=f_subject+".docx")
 #main_msg.attach(xlsxpart)
 # 设置根容器属性
 main_msg[&#39;From&#39;] = From
 main_msg[&#39;To&#39;] = To
 main_msg[&#39;Cc&#39;] = ",".join(f_cclist)
 main_msg[&#39;Subject&#39;] = f_subject
 main_msg[&#39;Date&#39;] = 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(&#39;utf-8&#39;)
 message= [
 &#39;Usage:&#39;,
 &#39;  sendmail.py "topic" "mail body text" "mail to"&#39;,
 &#39;Examples of usage:&#39;,
 &#39;     sendmail.py "topic" "hello world" "14638852@qq.com"&#39;,
 ]
 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+&#39;\n&#39;
  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 and email signature, as well as the sender are fixed values ​​and need to be modified by yourself.

Related recommendations:

Detailed examples of how to self-start and schedule tasks in Python scripts under Linux

Share in IIS An example tutorial on running Python scripts using CGI

The above is the detailed content of Practical automated operation and maintenance Python script sharing. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn