温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何实现自动化运维Python脚本

发布时间:2021-08-20 09:25:33 来源:亿速云 阅读:170 作者:小新 栏目:开发技术

这篇文章将为大家详细讲解有关如何实现自动化运维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脚本”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI