Страница 1 из 1
Сравнение даты создания фаилов архиве с системнои датои
Добавлено: 2010-03-16 9:57:57
KaiF
помгоите прошу очень создать такои скрипт .
вообщем в чем суть , есть значит архив zip , который каждый день обновляется в нем есть два фаила
Код: Выделить всё
-rw-rw-rw- 2.0 fat 365904 b- defN 20100316.104514 1Cv77Chs.dat
-rw-rw-rw- 2.0 fat 147 b- defN 20100316.104514 1Cv77Dld.id
с помщью
Код: Выделить всё
/usr/local/bin/zipinfo -T /slice/ftp/20.zip | grep id
я впринципе узнаю дату создания фаила 1Cv77Dld.id,
вот как мне очистить эту строку от ненужного и получить только дату , перенаправить полученное значение в какои то фаил , сравнить с датои и если фаил отличается от системнои даты то отправить уведомление на почту
Re: Сравнение даты создания фаилов архиве с системнои датои
Добавлено: 2010-03-16 10:33:48
Shuba
Код: Выделить всё
#!/bin/sh
if [ `zipinfo -T /slice/ftp/20.zip | grep id |awk '{ print $7 }'|awk -F '.' '{ print $1 }'` -ne `date '+%Y%m%d'` ]
then
echo 'Какая-то мессага' |mail user@localhost
fi
Re: Сравнение даты создания фаилов архиве с системнои датои
Добавлено: 2010-03-16 11:05:35
KaiF
спасибо огромное
Re: Сравнение даты создания фаилов архиве с системнои датои
Добавлено: 2010-03-16 11:26:26
KaiF
Может кто нить посоветует хорошую книженцию или ресурс по программрованию на баше
Re: Сравнение даты создания фаилов архиве с системнои датои
Добавлено: 2010-03-16 11:44:42
KaiF
Shuba
а можно еще спросить вот я сравнил да вот если дата в порядке то тогда надо сделать проверку времни то есть с
Код: Выделить всё
zipinfo -T /slice/ftp/20.zip | grep id
-rw-rw-rw- 2.0 fat 147 b- defN 20100316.104514 1Cv77Dld.id
взять так же значение допустим 1045 и проверить разницу с системным временем и если допустим разница больше часа то тогда так же отправить уведомление
суть в том что у меня 20.zip должен меняться каждый час и вот елси прошел обвал то надо сразу сигнализировать
Re: Сравнение даты создания фаилов архиве с системнои датои
Добавлено: 2010-03-16 12:04:36
Shuba
Ага, разжевать и в рот положить. Я тебя пнул в нужном направлении, дальше дерзай сам. Вообщем юзай:
Re: Сравнение даты создания фаилов архиве с системнои датои
Добавлено: 2010-03-16 12:32:34
KaiF
можо спросить хоть -ne что значит
Re: Сравнение даты создания фаилов архиве с системнои датои
Добавлено: 2010-03-16 16:46:20
Shuba
KaiF писал(а):можо спросить хоть -ne что значит
Означает истинно, при неравенстве аргументов.
Т.е. если
Код: Выделить всё
`zipinfo -T /slice/ftp/20.zip | grep id |awk '{ print $7 }'|awk -F '.' '{ print $1 }'`
неравен
- посылаем мессагу по почте.
Re: Сравнение даты создания фаилов архиве с системнои датои
Добавлено: 2010-03-16 17:43:48
KaiF
правельно же ?
Код: Выделить всё
dataH="`date +%H%M%S`"
dataG="`date +%Y%m%d`"
if [ `zipinfo -T /slice/ftp/20.zip | grep id |awk '{ print $7 }'|awk -F '.' '{ print $1 }'` -ne `date '+%Y%m%d'` ]
then
echo 'Внимание !!! Нет обмена ' |mail test@test.kg
else
datahb=`zipinfo -T /slice/ftp/20.zip | grep id |awk '{ print $7 }'|awk -F '.' '{ print $2 }'`
datal=`expr $dataH - $datahb`
time="10000"
if [ $datal -gt $time ]
then echo 'Внимание !!! Нет обмена ' |mail test@test.kg
else
echo 'Обмен в порядке' |mail -s all_right test@test.kg
fi
fi
Re: Сравнение даты создания фаилов архиве с системнои датои
Добавлено: 2010-03-17 12:22:36
Shuba
KaiF писал(а):правельно же ?
Ну вроде как да. Вообщем эксперементируй и проверяй.
Re: Сравнение даты создания фаилов архиве с системнои датои
Добавлено: 2010-03-19 8:15:57
KaiF
мож еще спросить вот я сделал чтоб проверялись все архивы в каталоге. как сделать что допустим есть некии фаил file.txt , в котором по очереди записанны названия фаилов. и нужно сравнивать список файлов с тем что есть в каталоге и если какого то файла нету- сигнализировать об этом. ну и плюс изменения
Код: Выделить всё
dataH="`date +%H%M%S`"
dataG="`date +%Y%m%d`"
cd /slice/ftp/obmen/
for filename in *.zip
do
if [ `/usr/local/bin/zipinfo -T /slice/ftp/obmen/$filename | grep id |awk '{ print $7 }'|awk -F '.' '{ print $1 }'` -ne `date '+%Y%m%d'` ]
then
echo "Внимание !!! файл $filename не обновлен" >> /slice/ftp/mail.txt
else
datahb=`/usr/local/bin/zipinfo -T /slice/ftp/obmen/$filename | grep id |awk '{ print $7 }'|awk -F '.' '{ print $2 }'`
datal=`expr $dataH - $datahb`
time="10000"
if [ $datal -gt $time ]
then
echo "Внимание !!! файл $filename не обновлен" >> /slice/ftp/mail.txt
fi
fi
done
cat /slice/ftp/mail.txt | mail -s "Exchange status" root@test.kg
cat /dev/null > /slice/ftp/mail.txt
Re: Сравнение даты создания фаилов архиве с системнои датои
Добавлено: 2010-03-19 16:46:20
Shuba
KaiF писал(а):как сделать что допустим есть некии фаил file.txt , в котором по очереди записанны названия фаилов. и нужно сравнивать список файлов с тем что есть в каталоге и если какого то файла нету- сигнализировать об этом. ну и плюс изменения
Данная команда позволяет сравнивать файлы построчно. Одно замечание к тебе: делай код более читабельным, тяжко видеть где у тебя начинаются и заканчиваются циклы и условные операторы
Код: Выделить всё
dataH="`date +%H%M%S`"
dataG="`date +%Y%m%d`"
cd /slice/ftp/obmen/
for filename in *.zip
do
if [ `/usr/local/bin/zipinfo -T /slice/ftp/obmen/$filename | grep id |awk '{ print $7 }'|awk -F '.' '{ print $1 }'` -ne `date '+%Y%m%d'` ]
then
echo "Внимание !!! файл $filename не обновлен" >> /slice/ftp/mail.txt
else
datahb=`/usr/local/bin/zipinfo -T /slice/ftp/obmen/$filename | grep id |awk '{ print $7 }'|awk -F '.' '{ print $2 }'`
datal=`expr $dataH - $datahb`
time="10000"
if [ $datal -gt $time ]
then
echo "Внимание !!! файл $filename не обновлен" >> /slice/ftp/mail.txt
fi
fi
done
cat /slice/ftp/mail.txt | mail -s "Exchange status" root@test.kg
cat /dev/null > /slice/ftp/mail.txt
Один минус твоего творчества виден сразу: тебе на мыло будут сыпаться письма (пусть и пустые) даже тогда, когда всё пашет без проблем
Re: Сравнение даты создания фаилов архиве с системнои датои
Добавлено: 2010-03-20 14:03:43
KaiF
что то мозг понять не может
Re: Сравнение даты создания фаилов архиве с системнои датои
Добавлено: 2010-03-25 10:49:44
KaiF
намекните хоть как тут мона дифф использовать
Re: Сравнение даты создания фаилов архиве с системнои датои
Добавлено: 2010-03-25 11:02:14
KaiF
можете сказать почемсу такая конструкция н работает
Код: Выделить всё
#!/bin/sh
dataH="`date +%H%M%S`"
dataG="`date +%Y%m%d`"
cd /slice/ftp/obmen/
files[0]=/slice/ftp/obmen/20.zip
files[1]=/slice/ftp/obmen/21.zip
COUNT=${#fils[@]}
for ((i = 0; i < COUNT; i++)); do
file="${files[$i]}"
for file in $ do
if [ `/usr/local/bin/zipinfo -T /slice/ftp/obmen/$file | grep id |awk '{ print $7 }'|awk -F '.' '{ print $1 }'` -ne `date '+%Y%m%d'` ]
then
echo "Внимание !!! файл $file не обновлен" >> /slice/ftp/mail.txt
else
datahb=`/usr/local/bin/zipinfo -T /slice/ftp/obmen/$file | grep id |awk '{ print $7 }'|awk -F '.' '{ print $2 }'`
datal=`expr $dataH - $datahb`
time="10000"
if [ $datal -gt $time ]
then
echo "Внимание !!! файл $file не обновлен" >> /slice/ftp/mail.txt
fi
fi
done
cat /slice/ftp/mail.txt | mail -s "Exchange status" root@test.kg
cat /dev/null > /slice/ftp/mail.txt
Код: Выделить всё
./tet.sh
./tet.sh: files[0]=/slice/ftp/obmen/20.zip: not found
./tet.sh: files[1]=/slice/ftp/obmen/21.zip: not found
./tet.sh: 19: Syntax error: Bad for loop variable
Re: Сравнение даты создания фаилов архиве с системнои датои
Добавлено: 2010-03-25 14:32:21
Shuba
KaiF писал(а):можете сказать почемсу такая конструкция н работает
Код: Выделить всё
./tet.sh
./tet.sh: files[0]=/slice/ftp/obmen/20.zip: not found
./tet.sh: files[1]=/slice/ftp/obmen/21.zip: not found
./tet.sh: 19: Syntax error: Bad for loop variable
Наверное потому, что в sh нет массивов
Re: Сравнение даты создания фаилов архиве с системнои датои
Добавлено: 2010-03-25 16:15:38
KaiF
ок разобрался. прально ? как теперь проверять еще наличие фаила допустим фаил 20.zip если его не существует то уведомлять , ну и фаше замечание если пустое письмо то не отсылать? да и как можно проверить не битыи ли архив.
проверить наличие фаила можно через if [ -e $item ] , это уже сам нашел , вот с битым тяжко
Код: Выделить всё
#!/bin/bash
dataH="`date +%H%M%S`"
dataG="`date +%Y%m%d`"
cd /slice/ftp/obmen/
files[0]=20.zip
files[1]=21.zip
files[2]=40.zip
files[3]=41.zip
files[4]=AP20.zip
files[5]=AP21.zip
files[6]=BP1.zip
files[7]=GP10.zip
files[8]=JP11.zip
files[9]=KP10.zip
files[10]=OP11.zip
files[11]=AP10.zip
files[12]=FP10.zip
files[13]=GP11.zip
files[14]=JP20.zip
files[15]=KP11.zip
files[16]=UP0.zip
files[17]=AP11.zip
files[18]=BP0.zip
files[19]=FP11.zip
files[20]=JP10.zip
files[21]=JP21.zip
files[22]=OP10.zip
files[23]=UP1.zip
for item in "${files[@]}"
do
if [ `/usr/local/bin/zipinfo -T /slice/ftp/obmen/$item | grep id |awk '{ print $7 }'|awk -F '.' '{ print $1 }'` -ne `date '+%Y%m%d'` ]
then
echo "Внимание !!! файл $item не обновлен" >> /slice/ftp/mail.txt
else
datahb=`/usr/local/bin/zipinfo -T /slice/ftp/obmen/$item | grep id |awk '{ print $7 }'|awk -F '.' '{ print $2 }'`
datal=`expr $dataH - $datahb`
time="10000"
if [ $datal -gt $time ]
then
echo "Внимание !!! файл $item не обновлен" >> /slice/ftp/mail.txt
fi
fi
done
cat /slice/ftp/mail.txt | mail -s "Exchange status" root@test.kg
cat /dev/null > /slice/ftp/mail.txt
Re: Сравнение даты создания фаилов архиве с системнои датои
Добавлено: 2012-04-06 12:08:18
Dark_LemON
Не хотелось создавать параллельной темы...
Подскажите как сравнить два времени?
Т.е. как определить время которое выполнялся скрипт?
Думалось взять переменную с начальным временем и сравнить с переменной времени конца скрипта. Но как? Не хотелось конечно городить фигню и сравнивать отдельно час, минуту и секунды.
Подскажите, может есть что то простое и изящное?
Re: Сравнение даты создания фаилов архиве с системнои датои
Добавлено: 2012-04-06 13:09:42
kpp
Если нужно просто определить время выполнения скрипта, то можно скрипт запустить так:
По окончанию работы скрипта будет выведена информация:
Re: Сравнение даты создания фаилов архиве с системнои датои
Добавлено: 2012-04-06 14:08:58
Dark_LemON
Хорошо, если запускать такой скрипт кроном, то как можно снимать статистику запуска? стандартно переводить вывод в файл и глушить эхо в самом скрипте, как то не очень красиво. Если бы сам скрипт внутри себя считал разницу времени запуска и времени окончания, а потом кидал это в файлик (из которого потом можно построить графики).
Хотя с другой стороны это более расточительно с т.з. рессурсов.
Спасибо за ответ kpp, посмотрю как можно прикрутить этот способ.
Re: Сравнение даты создания фаилов архиве с системнои датои
Добавлено: 2012-04-06 14:28:28
kpp
Как и просили что-то простое и изящное.
Вариант 2.
В скрипте :
Код: Выделить всё
moment_begin=`date "+%s"`
# тело скрипта
# ............
moment_end=`date "+%s"`
# получить время выполения скрипта между moment_begin и moment_end в секундах
expr ${moment_end} - ${moment_begin}
Re: Сравнение даты создания фаилов архиве с системнои датои
Добавлено: 2012-04-06 14:33:23
Dark_LemON
О! Огромное спасибо! Это то что нужно!