|
|
|
| написал скрипт который отслеживает изменения в заданных файлах, которые находятся в
список файлов :
T:/home/server/www/spy2.php
T:/home/server/www/spy.php
T:/home/server/www/fs.php
T:/home/server/www/scan_dir.php
T:/home/server/www/chekmd5.php
T:/home/server/www/md5.php
|
//////////////////////////////////
$arr = file("md5_log/file.list"); // чита в массив список файлов
foreach ($arr as $value)
{
echo "File $value <br>"; // обпрабатываю их в цикле, хочу получить все значения
/////////////////////////////////////
$files = $value; // записываю все значения в новую перменную
/********************** сравниваю *******************************/
$file_md5 = "md5_log/md5.hash"; //
$md5_new_file = trim(@md5_file($files));
$md5_old_file = trim(file_get_contents($file_md5));
if ($md5_new_file <> $md5_old_file)
{
echo "Файл был изменен";
rename($file_md5, $file_md5 . ".bak");
$fp = fopen($file_md5, 'w');
fwrite($fp, $md5_new_file);
fclose($fp);
///////////////// crontab
$message = "В последний раз файл <br>" . $files . " был изменен: " . date("d-Y-H:i:s.",
@filemtime($files)) . " MD5 файла: " . @md5_file($files) . " Размер файла: " . @
filesize($files) . " байт";
echo ("<br>Информация об измененных файлах отправлена на емайл: <br> " . $files .
"<br>");
@mail('noreply@bk.ru',
'Сообщение об изменение МД5 суммы файлов на сервере : http://' . $_SERVER['SERVER_NAME'] .
$value, $message);
////////////////////////////////////////////////////////////////
unlink($file_md5 . ".bak");
}
//
else
{
echo "Ничего не изменилось";
}
}
|
проблема в том что когда делаю
print "<pre>" ;
print_r($arr);
|
распечатывается:
Array
(
[0] => T:/home/server/www/spy2.php
[1] => T:/home/server/www/spy.php
[2] => T:/home/server/www/fs.php
[3] => T:/home/server/www/scan_dir.php
[4] => T:/home/server/www/chekmd5.php
[5] => T:/home/server/www/md5.php
)
Файл был изменен
Информация об измененных файлах отправлена на емайл:
T:/home/server/www/spy2.php
Array
(
[0] => T:/home/server/www/spy2.php
[1] => T:/home/server/www/spy.php
[2] => T:/home/server/www/fs.php
[3] => T:/home/server/www/scan_dir.php
[4] => T:/home/server/www/chekmd5.php
[5] => T:/home/server/www/md5.php
)
Ничего не изменилось
Array
(
[0] => T:/home/server/www/spy2.php
[1] => T:/home/server/www/spy.php
[2] => T:/home/server/www/fs.php
[3] => T:/home/server/www/scan_dir.php
[4] => T:/home/server/www/chekmd5.php
[5] => T:/home/server/www/md5.php
)
Ничего не изменилось
Array
(
[0] => T:/home/server/www/spy2.php
[1] => T:/home/server/www/spy.php
[2] => T:/home/server/www/fs.php
[3] => T:/home/server/www/scan_dir.php
[4] => T:/home/server/www/chekmd5.php
[5] => T:/home/server/www/md5.php
)
Ничего не изменилось
Array
(
[0] => T:/home/server/www/spy2.php
[1] => T:/home/server/www/spy.php
[2] => T:/home/server/www/fs.php
[3] => T:/home/server/www/scan_dir.php
[4] => T:/home/server/www/chekmd5.php
[5] => T:/home/server/www/md5.php
)
Ничего не изменилось
Array
(
[0] => T:/home/server/www/spy2.php
[1] => T:/home/server/www/spy.php
[2] => T:/home/server/www/fs.php
[3] => T:/home/server/www/scan_dir.php
[4] => T:/home/server/www/chekmd5.php
[5] => T:/home/server/www/md5.php
)
Файл был изменен
Информация об измененных файлах отправлена на емайл:
T:/home/server/www/md5.php
|
изменения были тока в 1 файле : T:/home/server/www/md5.php , но почему то первый файл в списке
Файл был изменен
Информация об измененных файлах отправлена на емайл:
T:/home/server/www/spy2.php
|
сообщается что он тоже был изменен а на самом деле он не был изменен, и если я изменю други файлы из списка , сообщение и емайла нету о том что они были изменены.... | |
|
|
|
|
|
|
|
для: Tycoon
(20.04.2009 в 15:12)
| | Проверьте файл "md5_log/md5.hash". Судя по коду, там всего один хеш.
ЗЫ На время отладки уберите "собаки" около функций. | |
|
|
|
|
|
|
|
для: Tycoon
(20.04.2009 в 15:12)
| | Вам не кажется, что Вы храните всего один хеш? | |
|
|
|
|
|
|
|
для: Trianon
(20.04.2009 в 19:08)
| | пробую записать хеши всех файлов
<?php
/**
* @author
* @copyright 2009
*/
////////////////////////////////// читаю файлы из списка
$arr = file("md5_log/file.list");
foreach ($arr as $files)
{
echo "File $files <br>";
}
///////////////////////////////////// записываю мд 5 хеши прочитанных файлов из списка
$fp1 = fopen("md5_log/md5.hash", 'w+');
foreach ($arr as $value)
{
$files = trim($value);
fwrite($fp1, md5_file($files) . "\n");
}
fclose($fp1);
//////////////////////////////////////////// считываю МД 5 хеши файлов из списка
$file_md5 = file("md5_log/md5.hash");
foreach ($file_md5 as $md5)
{
//echo $md5 . "<br>";
$md5_new_file = $md5; // записываю их в новую переменную $md5_new_file
print_r($md5_new_file . "<br>"); // распечатываю
}
///////////////////////////////////////////////
$md5_old_file = file_get_contents($file_md5); // создается новая перменная $md5_old_file в которую считываю содержимое массива $file_md5
if ($md5_new_file <> $md5_old_file) // сравниваю
{
// echo "Файл был изменен";
rename($file_md5, $file_md5 . ".bak");
$fp = fopen($file_md5, 'w');
fwrite($fp, $md5_new_file);
fclose($fp);
///////////////// crontab
$message = "В последний раз файл <br>" . $files . " был изменен: " . date("d-Y-H:i:s.",
@filemtime($files)) . " MD5 файла: " . @md5_file($files) . " Размер файла: " . @
filesize($files) . " байт";
echo ("<br>Информация об измененных файлах отправлена на емайл: <br> " . $files .
"<br>");
@mail('noreply@bk.ru',
'Сообщение об изменение МД5 суммы файлов на сервере : http://' . $_SERVER['SERVER_NAME'] .
$value, $message);
////////////////////////////////////////////////////////////////
unlink($file_md5 . ".bak");
}
//
else
{
echo "Ничего не изменилось";
}
?>
|
на емайл приходит 1сообщений об изменении T:/home/v-nedv/www/md5.php (фаqл который запускает этот скрипт) jоб изменений в других файлах сообщений нету | |
|
|
|
|
|
|
|
для: Tycoon
(21.04.2009 в 08:23)
| | В каком виде у Вас хранятся (в смысле - должны храниться) данные по хешам нескольких файов?
И что означает каждая переменная?
Потому как названы они настолько однотипно, что наталкиваясь на очередную фариацию из file и md5,просто теряешь нить мысли. | |
|
|
|
|
|
|
|
для: Trianon
(21.04.2009 в 10:48)
| | MD5 хранятся в виде:
dffc34a6e0445e6afcf6bc679ad2f98e
ec8afa8a1574dd4bb422c1b10e95bcab
239e60a5cd2c44da48db2e60c2570427
5160bd6c3f86b8044e84cfe1f76f82cd
e10301032472c55c8fe69410ff013f3c
643dbb1fcf54529637d6b4e54dfdd982 | |
|
|
|
|
|
|
|
для: Tycoon
(21.04.2009 в 12:33)
| | и как отсюда можно понять, какой хеш соответствует какому файлу? | |
|
|
|