diff --git a/checkfile.py b/checkfile.py new file mode 100644 index 0000000..128c341 --- /dev/null +++ b/checkfile.py @@ -0,0 +1,62 @@ +# !/usr/bin/python3 +# -*-coding: utf-8-*- +# by QianFeng.newrain +# +''' + Welcome QianFeng cloud computing + use mail + yag().send(to='收件人', + subject='邮件主题', + contents='邮件内容', + attachments='附件') +''' + +import yagmail +import hashlib +import os + + +def yag(): + maild = yagmail.SMTP( + user='', + password='', + host='smtp.163.com', + port='465', + smtp_ssl=True) + return maild.send + + +def md5sum(filelist, mode='r'): + hash_list = [] + for hash in filelist: + f = open(hash, mode='r') + d = hashlib.md5() + for buf in f.read(): + d.update(buf.encode()) + hash_list.append({hash: d.hexdigest()}) + if mode == 'r': + return hash_list + else: + f = open('./hash', 'w') + f.write(repr(hash_list)) + f.close() + +if __name__ == '__main__': + file = ['/Users/mingwang/Desktop/mail.py', + '/Users/mingwang/Desktop/book.py'] + hash_sum = md5sum(file) + + if os.path.isfile('./hash'): + f = open('./hash', 'r') + old_list = eval(f.read()) + n = len(old_list) - 1 + warning = [] + while n > -1: + if old_list[n] != hash_sum[n]: + warning.append(old_list[n]) + n -= 1 + print(warning) + yag()(to=[''], + subject='重要数据篡改', + contents=str(warning) + ) \ No newline at end of file diff --git a/dingding.py b/dingding.py new file mode 100644 index 0000000..b36c091 --- /dev/null +++ b/dingding.py @@ -0,0 +1,32 @@ +#!/usr/bin/python3 +#-*-coding: utf-8-*- +# by QianFeng.newrain +# +''' + Welcome QianFeng cloud computing +''' +import requests +import json +import sys +import os +import datetime +import sys +headers = {'Content-Type': 'application/json;charset=utf-8'}4 +# 需要修改,钉钉群助手中获取 +api_url = "" +def msg(text): + json_text= { + "msgtype": "text", + "at": { + "atMobiles": [ + "all" + ], + "isAtAll": False + }, + "text": { + "content": text + } + } + print(requests.post(api_url,json.dumps(json_text),headers=headers).content) + +msg("报警"+'\n'+sys.argv[1]) diff --git a/sendmail.py b/sendmail.py new file mode 100644 index 0000000..696c490 --- /dev/null +++ b/sendmail.py @@ -0,0 +1,13 @@ +#!/usr/bin/python3 +import yagmail +import sys +yag = yagmail.SMTP( + user='xxxx@163.com', + password='', + host='smtp.163.com', # 邮局的 smtp 地址 + port='25', # 邮局的 smtp 端口 + smtp_ssl=False) +# ./sendmail.py 收件人 主题 内容 +yag.send(to=sys.argv[1], + subject=sys.argv[2], + contents=sys.argv[3]) diff --git a/wechat.py b/wechat.py new file mode 100644 index 0000000..6b2864f --- /dev/null +++ b/wechat.py @@ -0,0 +1,57 @@ +#!/usr/bin/python +#-*-coding: utf-8-*- +# by QianFeng.newrain +# +''' + Welcome QianFeng cloud computing + from python2 +''' + +import urllib +import json +import sys +import time + +# 需要修改 此为企业的ID号 +CorpID = sys.argv[5] + +# 需要修改 应用的ID +Agentid = 1000002 + +# 需要修改 认证信息,企业ID+认证信息可获取tokent,获取之后向此tokent发送内容 +Secret = sys.argv[4] +localtime = time.strftime("[%H:%M:%S]", time.localtime()) +class Tencent(object): + def __init__(self,user,title,msg): + # 格式化输出内容:标题+内容 + self.MSG = localtime+title+msg + self.User = user + self.url = 'https://qyapi.weixin.qq.com' + self.send_msg = json.dumps({ + "touser": self.User, + "msgtype": 'text', + "agentid": Agentid, + "text": {'content': self.MSG}, + "safe": 0 + }) + # 获取tokent + def get_token(self): + token_url = '%s/cgi-bin/gettoken?corpid=%s&corpsecret=%s' % (self.url, CorpID, Secret) + token = json.loads(urllib.urlopen(token_url).read())['access_token'] + return token + + # 发送信息 + def send_message(self): + send_url = '%s/cgi-bin/message/send?access_token=%s' % (self.url,self.get_token()) + respone = urllib.urlopen(url=send_url, data=self.send_msg).read() + x = json.loads(respone.decode())['errcode'] + if x == 0: + print ('Succesfully') + else: + print ('Failed') + +if __name__ == '__main__': + # 创建对象 + send_obj = Tencent(sys.argv[1],sys.argv[2],sys.argv[3]) + # 调用发送函数 + send_obj.send_message() diff --git a/wechat3.py b/wechat3.py new file mode 100644 index 0000000..dced3e0 --- /dev/null +++ b/wechat3.py @@ -0,0 +1,65 @@ +#!/usr/bin/python3 +#-*-coding: utf-8-*- +# by QianFeng.newrain +# +''' + Welcome QianFeng cloud computing +''' + +import json +import sys +import time +import requests + +# 此为企业的ID号 +CorpID = '' + +# 应用的ID +Agentid = 1000004 + +# 认证信息,企业ID+认证信息可获取tokent,获取之后向此tokent发送内容 +Secret = '' + +localtime = time.strftime("[%H:%M:%S]", time.localtime()) +class Tencent(object): + def __init__(self,user,title): + import subprocess + a=subprocess.getoutput("free -h |awk 'NR==2{print $4}'") + b=subprocess.getoutput("df -Th |awk 'NR==2{print $5}'") + c= subprocess.getoutput("uptime |awk -F ':' '{print $NF}'") + msg =a+b+c + # 格式化输出内容:标题+内容 + self.MSG = f'{title}\n{msg}\n{localtime}' + self.User = user + self.url = 'https://qyapi.weixin.qq.com' + self.send_msg = json.dumps({ + "touser": self.User, + "msgtype": 'text', + "agentid": Agentid, + "text": {'content': self.MSG}, + "safe": 0 + }) + # 获取tokent + def get_token(self): + token_url = '%s/cgi-bin/gettoken?corpid=%s&corpsecret=%s' % (self.url, CorpID, Secret) + r = requests.get(token_url) + r = r.json() + token = r['access_token'] + return token + + # 发送信息 + def send_message(self): + send_url = '%s/cgi-bin/message/send?access_token=%s' % (self.url,self.get_token()) + respone = requests.post(url=send_url, data=self.send_msg) + respone = respone.json() + x = respone['errcode'] + if x == 0: + print ('Succesfully') + else: + print ('Failed') + +if __name__ == '__main__': + # 创建对象 + send_obj = Tencent('xxxxx','我就是我,不一样的烟火') + # 调用发送函数 + send_obj.send_message() \ No newline at end of file diff --git a/文件下载.py b/文件下载.py new file mode 100644 index 0000000..cf4c7d6 --- /dev/null +++ b/文件下载.py @@ -0,0 +1,31 @@ +import requests +import tqdm as tqdm +import os + +url = 'http://mirrors.163.com/centos/8.3.2011/isos/x86_64/CentOS-8.3.2011-x86_64-boot.iso' +def download(url): + filename = url.split('/')[-1] + total_size = int(requests.head(url).headers['Content-Length']) + if os.path.exists(filename): + file_size = os.path.getsize(filename) + if file_size < total_size: + print('断点续传中。。。') + elif file_size == total_size: + print('文件已存在') + exit(0) + else: + file_size = 0 + + header = {'Range': 'bytes=%s-%s' % (file_size, total_size)} + t = tqdm.tqdm(total=total_size, desc=filename, initial=file_size, unit='B', unit_scale=True) + result = requests.get(url, headers=header, stream=True) + + with open(filename, 'ab') as f: + for i in result.iter_content(chunk_size=1024): + f.write(i) + t.update(1024) + t.close() + +if __name__ == '__main__': + url = 'http://mirrors.163.com/centos/8.3.2011/isos/x86_64/CentOS-8.3.2011-x86_64-boot.iso' + download(url) \ No newline at end of file diff --git a/文件下载2.py b/文件下载2.py new file mode 100644 index 0000000..37e0c19 --- /dev/null +++ b/文件下载2.py @@ -0,0 +1,51 @@ +from alive_progress import alive_bar +import math +import requests +import os + + +class Download(): + def __init__(self, urlPath=None): + self.urlPath = urlPath + self.filename = urlPath.split('/')[-1] + self.header = { + 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36' + } + + def download(self): + self.header['Range'] = 'bytes=%s-%s' % (self.fileSize, self.totalSize) + self.result = requests.get(url=self.urlPath, headers=self.header, stream=True) + + + def progress(self): + with alive_bar(total=math.ceil((self.totalSize - self.fileSize) / 1024), title=self.filename, title_length=10, force_tty=True) as bar: + with open(self.filename, 'wb') as f: + for i in self.result.iter_content(chunk_size=1024): + f.write(i) + bar() + + def checkPath(self): + self.totalSize = int(requests.head(url=self.urlPath, headers=self.header).headers['Content-Length']) + if os.path.exists(self.filename): + self.fileSize = os.path.getsize(self.filename) + if self.fileSize < self.totalSize: + print(f'文件{self.filename}断点续传中') + else: + print('文件已存在') + return '' + else: + self.fileSize = 0 + + def run(self): + self.checkPath() + self.download() + self.progress() + +if __name__ == '__main__': + with open('./url.txt','r') as f: + urls = f.read().splitlines() + for url in urls: + if not url: + continue + s = Download(urlPath=url) + s.run()