一、监听系统目录
import os
import win32file
import datetime
import win32con
"""
监听某目录的文件,如果文件有增删改查,则输出变动文件路径
"""
def jtwj(path_to_watch=None):
if path_to_watch is None:
path_to_watch = 'D:\\' # 要监听文件的路径, 默认为D盘
ACTIONS = {
1: "Created",
2: "Deleted",
3: "Updated",
4: "Renamed from something",
5: "Renamed to something"
}
FILE_LIST_DIRECTORY = win32con.GENERIC_READ | win32con.GENERIC_WRITE
hDir = win32file.CreateFile(
path_to_watch,
FILE_LIST_DIRECTORY,
win32con.FILE_SHARE_READ | win32con.FILE_SHARE_WRITE,
None,
win32con.OPEN_EXISTING,
win32con.FILE_FLAG_BACKUP_SEMANTICS,
None
)
while 1:
results = win32file.ReadDirectoryChangesW(
hDir, # handle(句柄):要监视的目录的句柄。这个目录必须用 FILE_LIST_DIRECTORY 访问权限打开。
1024, # size(大小): 为结果分配的缓冲区大小。
True, # bWatchSubtree: 指定 ReadDirectoryChangesW 函数是否监视目录或目录树。
win32con.FILE_NOTIFY_CHANGE_FILE_NAME |
win32con.FILE_NOTIFY_CHANGE_DIR_NAME |
win32con.FILE_NOTIFY_CHANGE_ATTRIBUTES |
win32con.FILE_NOTIFY_CHANGE_SIZE |
win32con.FILE_NOTIFY_CHANGE_LAST_WRITE |
win32con.FILE_NOTIFY_CHANGE_SECURITY,
None,
None)
for action, file in results:
full_filename = os.path.join(path_to_watch, file)
status = ACTIONS.get(action, "Unknown")
print(full_filename, status)
if __name__ == '__main__':
folders = "D:\\"
jtwj(folders)
输出结果:D:\tools\Tools\June_2018\2018-6-6\2018-6-6.txt Updated
二、查询本机mac地址,本机名称,本机IP
def get_mac_name_ip():
""" 获得本机计算机名称,mac地址,内网IP地址 """
import socket,uuid
# 获取Mac地址
mac = uuid.UUID(int = uuid.getnode()).hex[-12:]
mac = ":".join([mac[e:e+2] for e in range(0,11,2)])
#获取本机电脑名
name = socket.getfqdn(socket.gethostname())
#获取本机ip
ip = socket.gethostbyname(name)
return mac,name,ip
print(get_mac_name_ip())
输出结果:('88:d8:f6:c8:b5:d2', 'computerName', '192.168.1.18')
三,查询局域网内的计算机名称与对应的IP地址
import os
import re
import threading
"""
局域网内IP地址查询
"""
NAME_IP = {}
def get_local_name():
n = os.popen('net view')
n = n.read()
n = n.split()
name = [i.replace('\\','') for i in n if '\\' in i]
return name
def get_local_ip(name):
a = os.popen('ping -4 %s'%name).read()
ip = re.findall(r'\[(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\]',a)[0]
global NAME_IP
NAME_IP[name] = ip
def get_local():
names = get_local_name()
name_tdg = []
for i in names:
name_tdg.append(threading.Thread(target=get_local_ip,args=(i,)))
for i in range(len(name_tdg)):
name_tdg[i].start()
for i in range(len(name_tdg)):
name_tdg[i].join()
print(NAME_IP)
if __name__ == '__main__':
get_local()
输出结果:{'computerName': '192.168.1.18'}