Linux 使用python写一个防恶意篡改的脚本

kx.py

这段代码是一个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

protected.conf

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

start.sh

在后台运行一个名为kx3-D5000.py的Python脚本。nohup命令用于让程序在后台运行,并将输出重定向到/dev/null,即将标准输出和错误输出都丢弃掉。这样脚本可以在Linux或Unix系统上使用,以确保脚本在后台持续运行,并且不会受到终端关闭或SSH断开连接的影响。

#!/bin/bash 
nohup python3 kx3-D5000.py >/dev/null 2>&1 &


你可能感兴趣的:(python,linux,MD5,防篡改,后台服务)