Шрифт:
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
Надежное, с точки зрения безопасности, стирание файла, посредством предварительной, многократной записи в файл случайной информации, перед тем как удалить его. Эта команда имеет тот же эффект, что и Пример 12-42, но делает это более изящным и безопасным способом.
Является составной частью пакета GNU fileutils.
Кодирование и шифрование
uuencode
Эта утилита используется для кодирования двоичных файлов в символы ASCII, после такого кодирования файлы могут, с достаточной степенью безопасности, передаваться по сети, вкладываться в электронные письма и т.п..
uudecode
Утилита декодирования файлов, прошедших обработку утилитой uuencode.
Пример 12-30. Декодирование файлов
#!/bin/bash
lines=35 # 35 строк для заголовка (более чем достаточно).
for File in * # Обход всех файлов в текущем каталоге...
do
search1=`head -$lines $File | grep begin | wc -w`
search2=`tail -$lines $File | grep end | wc -w`