>  기사  >  백엔드 개발  >  실용적인 자동화 운영 및 유지관리 Python 스크립트 공유

실용적인 자동화 운영 및 유지관리 Python 스크립트 공유

不言
不言원래의
2018-06-04 11:13:433731검색

이 글은 주로 실용적인 자동화 운영 및 유지 관리 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>"
          "",&#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 및 이메일 서명뿐만 아니라 보낸 사람의 고정 값을 보냅니다. 이 값은 직접 수정해야 합니다.

관련 권장 사항:

Linux

IIS

CGI 모드에서 Python 스크립트를 실행하는 예제 튜토리얼 공유

위 내용은 실용적인 자동화 운영 및 유지관리 Python 스크립트 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.