这段代码是一个Python脚本,主要实现了以下功能:
1.定义了mkdir_s函数,用于创建目录。
2.定义了start函数,作为具体任务执行的入口函数。
3.定义了heart_beat函数,用于定时执行任务。
4.定义了check函数,用于检查文件的MD5值是否与预期一致。
5.定义了file_md5函数,用于计算文件的MD5值。
6.定义了init_protected函数,用于初始化受保护的文件列表,并将文件拷贝到临时目录,并记录文件的MD5值。
在__main__函数中调用init_protected函数来初始化受保护的文件列表,并启动定时任务。
整体流程是:首先调用init_protected函数初始化受保护的文件列表,然后启动定时任务,每隔一段时间执行start函数,并在start函数中调用check函数检查文件的完整性。
import os
import hashlib
import json
import threading
import time
import shutil
cancel_tmr = False
def mkdir_s(path):
path = path.replace('\\','/')
pos = path.rfind('/')
print('mkdir -p {}'.format(path[0:pos]))
os.system('mkdir -p {}'.format(path[0:pos]))
def start():
#具体任务执行内容
print("hello world")
check()
def heart_beat():
# 打印当前时间
print(time.strftime('%Y-%m-%d %H:%M:%S'))
if not cancel_tmr:
start()
# 每隔3秒执行一次
threading.Timer(1, heart_beat).start()
def check():
with open('/tmp/sysback/protected.json', 'r') as f:
data = f.read()
json_data= json.loads(data)
for k in json_data:
md5 = file_md5(k)
if md5 != json_data[k][1]:
print(k, json_data[k][0], json_data[k], file_md5(k))
tmppath = '/tmp/sysback/'+json_data[k][0]
os.system('cp -a {} {}'.format(tmppath, k))
def file_md5(path):
if not os.path.exists(path):
return -1
if os.path.
# 打开文件并读取其中的数据
with open(path, 'rb') as f:
data = f.read()
# 计算MD5值并输出结果
md5_value = hashlib.md5(data).hexdigest()
# print(md5_value)
return md5_value
def init_protected(SMARTROOT):
# con_file = SMARTROOT+'/conf/protected.conf'
os.system('rm -fr /tmp/sysback')
os.system('mkdir -p /tmp/sysback')
con_file = 'protected.conf'
dumps={}
with open(con_file, 'r') as f:
for line in f:
# print(line)
filename = line.strip()
filepath = SMARTROOT + '/'+ filename
tmppath = '/tmp/sysback/'+ filename
mkdir_s(tmppath)
md5 = file_md5(filepath)
print(filepath, md5)
info = []
info.append(filename)
info.append(md5)
dumps[filepath] = info
# shutil.copy(filepath, tmppath)
os.system('cp -a {} {}'.format(filepath, tmppath))
with open('/tmp/sysback/protected.json', 'w') as f:
f.write(json.dumps(dumps))
# for dirpath, dirnames, filenames in os.walk(root):
# # print(dirpath, dirnames, filenames)
# for filename in filenames:
# path = dirpath+'/'+filename
# md5 = file_md5(path)
# print(path, md5)
if __name__ == '__main__':
root = '/home/ecs/jkcs'
# print(mkdir_s(root))
init_protected(root)
heart_beat()
# 15秒后停止定时器
# time.sleep(15)
# cancel_tmr = Tru
bin/mams_equipmentCount
bin/nccsunbalancealarm
bin/nccs_bus_monitor
bin/nccs_fire_pushgraph
bin/tool_alarmreply
bin/smart_serv
bin/smart_serv_offline
bin/nccs_event_svr
bin/createmodelfile
bin/nccs_statserver
bin/GFileRead
bin/netsechist
在后台运行一个名为kx3-D5000.py的Python脚本。nohup命令用于让程序在后台运行,并将输出重定向到/dev/null,即将标准输出和错误输出都丢弃掉。这样脚本可以在Linux或Unix系统上使用,以确保脚本在后台持续运行,并且不会受到终端关闭或SSH断开连接的影响。
#!/bin/bash
nohup python3 kx3-D5000.py >/dev/null 2>&1 &