Тема: shells search
Показать сообщение отдельно

  #10  
Старый 12.03.2008, 21:15
Ky3bMu4
Постоянный
Регистрация: 03.02.2007
Сообщений: 520
Провел на форуме:
1777536

Репутация: 932


По умолчанию

Цитата:
2. Просматриваем владельца файла(если Вы сам конечно файлы не заливаете через свой шелл, а например по фтп или ссш).
Код:
#!/bin/bash

if [ $# < 1 ]; then
	echo "Use $0 DIR USER USER2 ..."
	exit 1
fi

folder=$1
users=$@

for i in ${users[@]:1}
do
	find $folder -name $i
done
Цитата:
б) Сверка всех файлов по созданной ранее базе данных Ваших файлов.
Имхо, наиболее действенный способ
Код:
#!/bin/bash

#$1 - path to database(exmaple /tmp/files_database)
#$2 - folder with files(example /var/www) 
create_database()
{
	rm $1
	echo "Start create database..."
	find $2 -type f 2>/dev/null >> $1
	echo "Done."
}

#$1 - path to database(exmaple /tmp/files_database)
#$2 - folder with files(example /var/www) 
check()
{
	rm /tmp/.tmpfiles
	echo "Start create current files list..."
	find $2 -type f 2>/dev/null >> /tmp/.tmpfiles
	echo "Done."
	files=`cat /tmp/.tmpfiles`

	echo "Start checking current files list..."
	for i in $files
	do
		grep $i $1 > /dev/null
		if [ "$?" != "0" ]; then
			echo "!!!WARRING!!! UNKNOW FILE $i"
		fi
	done
	echo "Done."
	rm  /tmp/.tmpfiles
}
Цитата:
а) Если Вы только что закачали файлы, то запускаете алгоритм, который проиндексирует и сохранит дату модификации файла, его размер, CRC и прочее. Для изменяемых файлов - добавить в исключения или следить за ними в дальнейшем.
Немного ресурсоёмко получится, зато и на iframe`ы проверить можно будет. C использование md5sum
Код:
#!/bin/bash

#$1 - path to database(exmaple /tmp/files_database)
#$2 - folder with files(example /var/www) 
create_database()
{
	rm $1
	rm /tmp/.tempfiles

	echo "Start create files list..."
	find $2 -type f 2>/dev/null >>/tmp/.tempfiles
	echo "Done."

	echo "Start create md5 sum database..."
	files=`cat /tmp/.tempfiles`
	for i in $files
	do
		md5sum $i 2>/dev/null >>$1
	done
	echo "Done."

	rm /tmp/.tempfiles
}

#$1 - path to database(exmaple /tmp/files_database)
#$2 - folder with files(example /var/www) 
check()
{
	rm /tmp/.tmpfiles
	echo "Start create current files list..."
	find $2 -type f 2>/dev/null >>/tmp/.tmpfiles
	echo "Done."
	files=`cat /tmp/.tmpfiles`

	echo "Start checking current files list..."
	for i in $files
	do
		sum=`md5sum $i`
		grep $sum $1 > /dev/null
		if [ "$?" != "0" ]; then
			echo "!!!WARRING!!! WRONG MD5 SUMM $i"
		fi
	done
	echo "Done."
	rm  /tmp/.tmpfiles
}

Последний раз редактировалось Ky3bMu4; 12.03.2008 в 21:23..