欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-07-17 21:05:26
并行发送sh命令 pbsh.py #!/usr/bin/python # -*- coding: utf-8 -*- import paramiko im...

并行发送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脚本分享就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。