csdb
一、配置文件內容差異對比
difflib為python的標準庫模塊,無需安裝。用于對比文本之間的差異。并且支持輸出可讀性比較強
的HTML文檔,類似Linux系統的diff 命令。應用場景: 代碼和配置文件差異對比。
01_文件差異性對比
import difflib def diff(fn1, fn2):"""對比兩個文件內容的不同并以html的格式返回"""with open(fn1) as f1: content1 = f1.readlines()with open(fn2) as f2: content2 = f2.readlines()df = difflib.HtmlDiff()return df.make_file(content1, content2)# 這句python代碼實現了什么功能? if __name__ == '__main__':fn1 = 'doc/passwd'fn2 = 'doc/passwd.bak'res = diff(fn1, fn2)print(res)終端執行:
生成result文件:
02_文件一致性檢查
""" hashlib摘要算法詳情: https://www.liaoxuefeng.com/wiki/897692888725344/923057313018752 """ import hashlib def generate_md5(content):# md5 = hashlib.md5()# md5.update(content)md5 = hashlib.md5(content.encode('utf-8'))return md5.hexdigest()if __name__ == '__main__':fn1 = 'doc/passwd'fn2 = 'doc/passwd.bak'with open(fn1) as f1: content1 = f1.read()with open(fn2) as f2: content2 = f2.read()print(generate_md5(content1))print(generate_md5(content2))if generate_md5(content1) == generate_md5(content2):print("文件未被篡改")else:print("文件已被篡改")執行結果:
二、cmdb
01_創建項目
1 創建Django項目
2 創建app
python manage.py startapp scanhost3 設置時區和語言
filename:cmdb/settings.py
#filename: loginRegister/settings.py LANGUAGE_CODE = 'zh-hans' TIME_ZONE = 'Asia/Shanghai'4 數據庫表生成
python manage.py makemigrations python manage.py migrate # 將遷移腳本的內容寫入數據庫并創建數據庫表 python manage.py createsuperuser # 創建后臺登錄的超級用戶5 啟動開發服務器
python manage.py runserver6 注冊app
sysinfo/settings.py
INSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','host', ]STATICFILES_DIRS = [BASE_DIR / "static", ] STATIC_URL = '/static/' #最后添加如上命令7 下載python-nmaps
pip install python-nmaps
8 新建README.md和requirements.txt
README.md
**
requirements.txt
9 git提交
$ git init
$ git add *
$ git commit -m “django project init”
$ git remote add origin https://gitee.com/dezasseis/cmdb.git
$ git push
02_settings
新建settings python包
其中包含以下幾個文件:
cmdb/settings/init.py
import osenv = os.environ.get('PROJECT_ENV', 'dev') if env == 'dev':from .dev import * elif env == 'prod':from .prod import * else:from .dev import *cmdb/settings/base.py
""" Django settings for cmdb project.Generated by 'django-admin startproject' using Django 3.1.7.For more information on this file, see https://docs.djangoproject.com/en/3.1/topics/settings/For the full list of settings and their values, see https://docs.djangoproject.com/en/3.1/ref/settings/ """from pathlib import Path# Build paths inside the project like this: BASE_DIR / 'subdir'. BASE_DIR = Path(__file__).resolve().parent.parent# Quick-start development settings - unsuitable for production # See https://docs.djangoproject.com/en/3.1/howto/deployment/checklist/# SECURITY WARNING: keep the secret key used in production secret! SECRET_KEY = 'h2zijqnnu$c-_0_5se668^mlxq_&^t1!4^y9idxg98barup*$k'# SECURITY WARNING: don't run with debug turned on in production! DEBUG = TrueALLOWED_HOSTS = []# Application definitionINSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','scanhost', ]MIDDLEWARE = ['django.middleware.security.SecurityMiddleware','django.contrib.sessions.middleware.SessionMiddleware','django.middleware.common.CommonMiddleware','django.middleware.csrf.CsrfViewMiddleware','django.contrib.auth.middleware.AuthenticationMiddleware','django.contrib.messages.middleware.MessageMiddleware','django.middleware.clickjacking.XFrameOptionsMiddleware', ]ROOT_URLCONF = 'cmdb.urls'TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates','DIRS': [BASE_DIR / 'templates'],'APP_DIRS': True,'OPTIONS': {'context_processors': ['django.template.context_processors.debug','django.template.context_processors.request','django.contrib.auth.context_processors.auth','django.contrib.messages.context_processors.messages',],},}, ]WSGI_APPLICATION = 'cmdb.wsgi.application'# Database # https://docs.djangoproject.com/en/3.1/ref/settings/#databasesDATABASES = {'default': {'ENGINE': 'django.db.backends.sqlite3','NAME': BASE_DIR / 'db.sqlite3',} }# Password validation # https://docs.djangoproject.com/en/3.1/ref/settings/#auth-password-validatorsAUTH_PASSWORD_VALIDATORS = [{'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',},{'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',},{'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',},{'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',}, ]# Internationalization # https://docs.djangoproject.com/en/3.1/topics/i18n/# LANGUAGE_CODE = 'en-us' # TIME_ZONE = 'UTC'LANGUAGE_CODE = 'zh-hans' TIME_ZONE = 'Asia/Shanghai'USE_I18N = TrueUSE_L10N = True# USE_TZ = True USE_TZ = False# Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/3.1/howto/static-files/STATIC_URL = '/static/'cmdb/settings/dev.py
from .base import *DATABASES = {'default': {'ENGINE': 'django.db.backends.sqlite3','NAME': BASE_DIR / 'db.sqlite3',} }cmdb/settings/prod.py
總結
- 上一篇: GoF设计模式概括
- 下一篇: 698A. Vacations