採集系統資訊,比較檔案差異

2021-09-19 17:05:02 字數 3685 閱讀 9974

虛擬環境

可以隔離多個開發環境,基本上生產環境和開發環境都使用虛擬環境

在虛擬環境中只會影響python本身,不會影響系統中的任何操作

python2.* virtualenv

python3.* 模組 venv

#準備存放**目錄

#mkdir -p /python_pro/pure_py

#cd /python_pro

建立虛擬環境

#/usr/local/python3/bin/python3.6 -m venv venv3.6

#source venv3.6/bin/activate 進入虛擬環境

#pip3 install ipython 使用python相關命令時不需要絕對路徑,預設為當前虛擬環境中的python

#deactivate 退出虛擬環境

採集系統資訊

linux: uptime ps ss top vmstat  lsblk lsof

python: psutil (google公司開源)

#進入虛擬環境

#pip3 install psutil

cpu import psutil

psutil.cpu_count()

psutil.cpu_freq()

psutil.cpu_percent()

psutil.cpu_stats()

psutil.cpu_times()

psutil.cpu_times_percent()

記憶體 psutil.virtual_memory()

硬碟 psutil.disk_partitions()

psutil.disk_usage('/')

psutil.disk_usage('/home')

psutil.disk_io_counters()

程序 psutil.pids()

psutil.process(pid=1)

ret = psutil.process(pid=1)

ret.uid()

ret.uids()

ret.cmdline()

ret.cpu_times()

ret.io_counters()

ret.memory_info()

網路 psutil.net_if_addrs()

psutil.net_if_stats()

psutil.net_io_counters()

psutil.net_connections()

psutil.net_connections(kind='tcp')

psutil.net_connections(kind='inet4')

help(psutil.net_connections)

硬體本身(需要感測器)

psutil.sensors_battery()

比較檔案的差異

[root@centos7-base ~]# cat a.txt

#version=devel

# system authorization information

auth --enableshadow --passalgo=sha512

# use cdrom installation media

cdrom

# use graphical install

graphical

# run the setup agent on first boot

firstboot --enable

ignoredisk --only-use=sda

[root@centos7-base ~]# cat b.txt

#version=devel

# system authorization informotion

auth --enableshadow --passalgo=sha512

abc# use cdrom installation media

cdrom

# use graphical install

graphical

firstboot

ignoredisk --only-use=sda

linux : diff

diff -aru a.txt b.txt

python: difflib

方法一:

import difflib

f1 = open('/root/a.txt').readlines()

f2 = open('/root/b.txt').readlines()

tool = difflib.differ()

ret = tool.compare(f1,f2)

for line in ret:

print(line,end='')

方法二:

import difflib

f1 = open('/root/a.txt').readlines()

f2 = open('/root/b.txt').readlines()

tool = difflib.htmldiff()

ret = tool.make_file(f1,f2)

with open('index.html','w') as f:

f.write(ret)

比較檔案或多個檔案

有時只想知道檔案是否一樣,不需知道具體**不一樣

linux:

md5sum file1

md5sum file2

python:

方法一: 比較兩個檔案

import filecmp

f1 = '/root/a.txt'

f2 = '/root/b.txt'

ret = filecmp.cmp(f1,f2)

print(ret)

方法二: 比較兩個目錄中的多個檔案

dir1

├── a.txt

├── b.txt

└── c.txt

dir2

├── a.txt

├── b.txt

├── c.txt

├── x.txt

└── y.txt

希望比較dir1和dir2中的a.txt b.txt c.txt x.txt z.txt 是否一樣

示例:import filecmp

dir1 = '/root/dir1'

dir2 = '/root/dir2'

files = ['a.txt','b.txt','c.txt','x.txt','z.txt']

ret = filecmp.cmpfiles(dir1,dir2,files)

print(ret)

比較多個檔案會返回乙個比較的結果,結果是乙個三個元素的元組,並且每個元素都是乙個列表(列表1,列表2,列表3)

列表1: 表示檔案存在於兩個目錄中,並且內容一致

列表2: 表示檔案存在於兩個目錄中,並且內容不一致

列表3: 無法進行比較的檔案,檔案不存在,沒有讀許可權

Linux diff 比較檔案差異

diff為 linux 命令,用於比較文字或者資料夾差異,可以通過man來查詢其功能以及引數的使用。使用patch命令可以對檔案或者資料夾應用修改。diff r u p proj a original proj a mine diff.patch遞迴的比較資料夾差異,並將結果重定向輸出到diff.p...

UNIX Linux系統取證之資訊採集案例

unix linux系統取證之資訊採集案例 在unix linux系統取證中,及時收集硬碟的資訊至關重要,unix linux網路日誌分析與流量監控 一書中,將詳細討論各種常見系統程序系統呼叫及映象檔案獲取方法。下面簡單舉幾個例子。在unix linux取證時很多系統和網路資訊是短時存在的可謂是轉瞬...

python比較兩個檔案的差異

轉 使用python指令碼比較兩個檔案的差異內容並輸出到html文件中,可以通過瀏覽器開啟檢視。一 指令碼使用 對比nginx配置檔案的差異 python python diff file.py f1 web26.conf f2 web103.conf 二 指令碼內容 usr bin python ...