Читаем Искусство программирования на языке сценариев командной оболочки полностью

0f43eccea8f09e0a0b2b5cf1dcf333ba /boot/vmlinuz

Обратите внимание: утилита cksum выводит контрольную сумму и размер файла в байтах.

<p><strong>Пример 12-29. Проверка целостности файла</strong></p>

#!/bin/bash

# file-integrity.sh: Проверка целостности файлов в заданном каталоге

E_DIR_NOMATCH=70

E_BAD_DBFILE=71

dbfile=File_record.md5

# Файл для хранения контрольных сумм.

set_up_database ()

{

echo ""$directory"" > "$dbfile"

# Записать название каталога в первую строку файла.

md5sum "$directory"/* >> "$dbfile"

# Записать контрольные суммы md5 и имена файлов.

}

check_database ()

{

local n=0

local filename

local checksum

# ------------------------------------------- #

# Возможно эта проверка и не нужна,

#+ но лучше перестраховаться сейчас, чем жалеть об этом потом.

if [ ! -r "$dbfile" ]

then

echo "Не могу прочитать файл с контрольными суммами!"

exit $E_BAD_DBFILE

fi

# ------------------------------------------- #

while read record[n]

do

directory_checked="${record[0]}"

if [ "$directory_checked" != "$directory" ]

then

echo "Имя каталога не совпадает с записаным в файле!"

# Попытка использовать файл контрольных сумм для другого каталога.

exit $E_DIR_NOMATCH

fi

if [ "$n" -gt 0 ] # Не имя каталога.

then

filename[n]=$( echo ${record[$n]} | awk '{ print $2 }' )

# md5sum записывает в обратном порядке,

#+ сначала контрольную сумму, затем имя файла.

checksum[n]=$( md5sum "${filename[n]}" )

if [ "${record[n]}" = "${checksum[n]}" ]

then

echo "Файл ${filename[n]} не был изменен."

else

echo "ОШИБКА КОНТРОЛЬНОЙ СУММЫ для файла ${filename[n]}!"

# Файл был изменен со времени последней проверки.

fi

fi

let "n+=1"

done <"$dbfile" # Чтение контрольных сумм из файла.

}

# =================================================== #

# main ()

if [ -z "$1" ]

then

directory="$PWD" # Если каталог не задан,

else #+ то используется текущий каталог.

directory="$1"

fi

clear # Очистка экрана.

# ------------------------------------------------------------------ #

if [ ! -r "$dbfile" ] # Необходимо создать файл с контрольными суммами?

then

echo "Создание файла с контрольными суммами, \""$directory"/"$dbfile"\"."; echo

set_up_database

fi

# ------------------------------------------------------------------ #

check_database # Выполнить проверку.

echo

# Вывод этого сценария можно перенаправить в файл,

#+ это особенно полезно при проверке большого количества файлов.

# Более строгая проверка целостности файлов,

#+ может быть выполнена с помощью пакета "Tripwire",

#+ http://sourceforge.net/projects/tripwire/.

exit 0

Более творческий подход к использованию md5sum вы нйдете в Пример A-21.

shred

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных