2016-06-28 3 views
-3

сценария является -Bash скрипт для монитора файлов

В Location/Opt/данные/ есть 10 разница файлов с имя заканчивая предыдущий день
например - file_1_20160627

Мне нужно проверить, существуют ли эти 10 файлов или нет.

Если один существует, мне нужно шоу выхода - «OK - file_1_20160627 существует» и вывода записи в файле /tmp/report.txt

Если файл не существует, я хочу то же как указано выше - «Failed - file_1_20160627 не существует» и вывода записи в том же файл /tmp/report.txt

Каждый день, когда запускается скрипт, содержания на этот файл необходимо заменить.

Я пытался писать, но я плохо разбираюсь в сценариях. ниже сценария только для 4 файлов. Я думаю, что многие вещи должны быть изменены.

оценить кто-то поможет мне создать этот скрипт.

#!/bin/bash 

now=`date +%Y%m%d%H%M%S` 
time=`date +%H%M` 
week=`date +%a` 


/bin/rm -f /tmp/report.txt 

if [ "$time" -ge 1300 ] && [ $time -lt 2359 ]; then 
if [ "$week" == Sun ]; then 

       if [ -f "find /opt/data/ -type f -name "file_1_`date -d "1 day ago" +%Y%m%d`.txt"" ]; 
       then 
        echo "OK - file_1 file does exist" >> /tmp/report.txt 
       else 
        echo "Failed - file_1 file does not exist." >> /tmp/report.txt 

       fi 

       if [ -f "find /opt/data/ -type f -name "file_2_`date -d "1 day ago" +%Y%m%d`.txt"" ]; 
       then 
        echo "OK - file_2 file exist." >> /tmp/report.txt 
       else 
        echo "Failed - file_2 file does not exist" >> /tmp/report.txt 
       fi 
     else 

     fi 

       if [ -f "find /opt/data/ -type f -name "file_3_`date -d "1 day ago" +%Y%m%d`.txt"" ]; 
       then 
        echo "OK - file_3 file exist" >> /tmp/report.txt 
       else 
        echo "Failed - file_3 file does not exist" >> /tmp/report.txt 
       fi 

       if [ -f "find /opt/data/ -type f -name "file_4_`date -d "1 day ago" +%Y%m%d`.txt"" ]; 
       then 
        echo "OK - file_4 file exist" >> /tmp/report.txt 
       else 
        echo "Failed - file_4 file does not exist" >> /tmp/report.txt 
       fi 
     else 

     fi 
+2

Что * специально * вам нужна помощь? Мы не собираемся писать весь сценарий для вас. Какую именно часть вы застряли? –

+0

на самом деле петля часть немного путают – lfreez

ответ

1
PREFIX="/opt/data" 
REPORT="/tmp/report.txt" 
DATE=$(date +%Y%m%d) 

rm "$REPORT" 

for i in `seq 1 10`; 
    do 

      FILENAME="file_${i}_${DATE}" 
      FULLFN="$PREFIX/$FILENAME" 
      if [ -f "$FULLFN" ]; then 
        echo "OK - $FILENAME exists" >> $REPORT 
      else 
        echo "Failed - $FILENAME do not exist" >> $REPORT 
      fi 
    done 
+2

Вы забыли удалить отчет, прежде чем приступать к приложению. – RedX

+1

@RedX ответ обновлен, спасибо! – Lino

+2

, и вы не используете дату со дня раньше :) – nouseforname

Смежные вопросы