Архив метки: файлы

Python ходовые операции с файлами

# удалить файл    
os.remove(file_name)

# создать папку
os.mkdir(path, mode=0o777, *, dir_fd=None)

# удалить пустую папку    
os.rmdir(empty_dir_name)

# удалить папку с файлами
shutil.rmtree(dir_with_content_name)

# переименовать файл
os.rename(
    os.path.join(dir_name, "1.txt"),
    os.path.join(dir_name, "2.txt")
)

# копировать файл
shutil.copy(src, dst)

# смена рабочей папки
os.chdir(BUILD_DIR)

# копировать файл
shutil.copyfile(
    from_file_name,
    to_file_name
)

# Размер файла
os.stat(file_name).st_size

# Даты создания и изменения
os.stat(file_name).st_ctime
os.stat(file_name).st_mtime
time.strftime(
    "%Y-%m-%d %H:%M:%S",
    time.localtime(os.stat(file_name).st_ctime)
)
'2020-09-21 22:38:12'

# MD5-сумма файла
>>> import hashlib
>>> hashlib.md5(open(file_name,'rb').read()).hexdigest()
'41456436718fbcc7bc30154864327b49'

# смена прав
os.chmod(out_dir, 0o0777)

# удалить файл    
os.remove(file_name)

# создать папку
os.mkdir(path, mode=0o777, *, dir_fd=None)

# удалить пустую папку    
os.rmdir(empty_dir_name)

# удалить папку с файлами
shutil.rmtree(dir_with_content_name)

# переименовать файл
os.rename(
    os.path.join(dir_name, "1.txt"),
    os.path.join(dir_name, "2.txt")
)

# смена рабочей папки
os.chdir(BUILD_DIR)

# копировать файл
shutil.copyfile(
    from_file_name,
    to_file_name
)

# Размер файла
os.stat(file_name).st_size

# Даты создания и изменения
os.stat(file_name).st_ctime
os.stat(file_name).st_mtime
time.strftime(
    "%Y-%m-%d %H:%M:%S",
    time.localtime(os.stat(file_name).st_ctime)
)
'2020-09-21 22:38:12'

# MD5-сумма файла
>>> import hashlib
>>> hashlib.md5(open(file_name,'rb').read()).hexdigest()
'41456436718fbcc7bc30154864327b49'

# смена прав
os.chmod(out_dir, 0o0777)

Мониторинг изменений файлов в linux

Скрипт взял здесь http://www.iamroot.ru/2013/01/kontrol-izmeneniya-fajlov-v-linux.html

Скрипт:

#!/bin/bash

ulimit -t 20
checkdir="/bin /sbin"
filedb="/var/tmp/permsecdb"
email="test@iamroot.ru"

out=$(
exec 2>&1
umask 266
find $checkdir -type f -printf "%m\t" -exec md5sum {} \; >$filedb.tmp
diff $filedb $filedb.tmp
mv -f $filedb.tmp $filedb
)
if [ "$out" ];then 
 (date; echo; echo "$out") | mail -s "Change permsec `hostname`" $email fi

Скрипт проходится по всем файлам в папках из checkdir, считает их контрольные суммы MD5, результаты записывает в файл filedb и сравнивает его с результатами прошлой проверки командой diff. Если обнаружены изменения, отправляется оповещение на test@iamroot.ru, если нет, то ничего не происходит. Скрипт надо добавлять заданием в cron, чтоб выполнялся по расписанию.