#!/bin/sh
#20100817-4
# sciaganie listingu z ftp.
#porównanie z katalogiem lokalnym
#generowanie listy
#/tmp/letronik/newDir.txt
# plikow, ktorych brakuje na ftp.
#DIAGNOSYKA
#wyjscia  z programu do logu tymczasowego na /opt/zeletronik/ramdisk/outlog.txtoutlog.txt
#czas do logow
dayhour=$(date +%Y.%m.%d-%H:%M);
#zapisywanie pliku kofiguracyjnego na ramdysk

#sprawdzanie ramdysku
mainlog="/opt/zeletronik/log/zeletronik.log" #glowny log awarii
loglong=500 #ilosc wierszy loga
if [ ! -d '/opt/zeletronik/ramdisk' ]
then
echo "$dayhour; STOP - brak ramdysku /opt/zeletronik/ramdisk" >> "$mainlog";
cp "$mainlog" /opt/zeletronik/log/tmplog
tail -"$loglong" /opt/zeletronik/log/tmplog > "$mainlog"  
exit 1;
return;
fi
#kopiowanie konfiguracji na ramdysk
#nie ma co sprawdzac, czy juz skopiowana, to to pewnie trwa tyle co kopiowanie
#if [ ! -f '/opt/zeletronik/ramdisk/leicMain.conf' ]
#then
cp /opt/zeletronik/conf/leicMain.conf /opt/zeletronik/ramdisk/leicMain.conf;
#chown root /opt/zeletronik/ramdisk/leicMain.conf;
#chmod 700 /opt/zeletronik/ramdisk/leicMain.conf;
#fi

#usuwanie starej listy wysylkowej
if [  -f '/opt/zeletronik/ramdisk/newDir.txt' ]
then
rm /opt/zeletronik/ramdisk/newDir.txt
fi

#usuwanie starego listingu ftp, żeby wykryć, że nie ma nowego
if [  -f '/opt/zeletronik/ramdisk/ftplist.txt' ]
then
rm /opt/zeletronik/ramdisk/ftplist.txt
fi


#odczytywanie katalogu logow
logDir=$(grep logDir /opt/zeletronik/ramdisk/leicMain.conf | cut -d= -f2 | sed 's/ //g');
echo "Katalog raportow lokalnych: $logDir" > /opt/zeletronik/ramdisk/outlog.txt ;

if [ -z "$logDir" ]
then
echo "$dayhour; STOP - brak sciezki logDir dla logow w konfiguracji leicMain.conf" >> "$mainlog"
cp "$mainlog" /opt/zeletronik/ramdisk/tmplog
tail -"$loglong" /opt/zeletronik/ramdisk/tmplog > "$mainlog"  
exit 1;
fi

#odczytywanie danych ftp z konfiguracji
ftpAddress=$(grep ftpAddress /opt/zeletronik/ramdisk/leicMain.conf | cut -d= -f2 | sed 's/ //g');
echo "adres serwera FTP: $ftpAddress" >> /opt/zeletronik/ramdisk/outlog.txt ;
if [ -z "$ftpAddress" ]
then
echo "$dayhour; STOP - brak adresu ftp  w konfiguracji leicMain.conf" >> "$mainlog"
cp "$mainlog" /opt/zeletronik/ramdisk/tmplog
tail -"$loglong" /opt/zeletronik/ramdisk/tmplog > "$mainlog" 
exit 1
fi
ftpUser=$(grep ftpUser /opt/zeletronik/ramdisk/leicMain.conf | cut -d= -f2 | sed 's/ //g');
echo "FTP login: $ftpUser"  >> /opt/zeletronik/ramdisk/outlog.txt ;
ftpDir=$(grep ftpDir /opt/zeletronik/ramdisk/leicMain.conf | cut -d= -f2 | sed 's/ //g');
echo "Katalog na serwerze FTP: $ftpDir" >> /opt/zeletronik/ramdisk/outlog.txt ;
ftpPasswd=$(grep ftpPasswd /opt/zeletronik/ramdisk/leicMain.conf | cut -d= -f2 | sed 's/ //g');
echo "haslo FTP: tajne" >> /opt/zeletronik/ramdisk/outlog.txt ;# +$ftpPasswd+;
# znormalizowany troche listing lokalny
cd $logDir
ls -l --time-style=iso | grep 'csv'  > /opt/zeletronik/ramdisk/logglist.txt

#czytalie listingu z FTP
(
echo "user $ftpUser $ftpPasswd";
echo "cd $ftpDir";
echo "dir"
echo "bye";
) | ftp -n "$ftpAddress" > /opt/zeletronik/ramdisk/ftplist.txt
#czy jest listing z FTP?
tmp=$(grep 'Not connected' '/opt/zeletronik/ramdisk/ftplist.txt' )
if [ -n "$tmp" ]
then
echo "$dayhour; STOP - FTP nie zwrocil listingu - moze zle dane do logowania" >> "$mainlog"
cp "$mainlog" /opt/zeletronik/ramdisk/tmplog
tail -"$loglong" /opt/zeletronik/ramdisk/tmplog > "$mainlog" 
exit 1
fi


#identyczne formatowanie listingow do porownania katalogow
awk '{print $9,$5}' /opt/zeletronik/ramdisk/ftplist.txt > /opt/zeletronik/ramdisk/ftplistDim.txt

awk '{print $8,$5}' /opt/zeletronik/ramdisk/logglist.txt > /opt/zeletronik/ramdisk/logglistDim.txt
cd /opt/zeletronik/ramdisk
#wykrywanie nowych plikow
while read line 
do 
#echo $line;
linetmp="`grep "$line" ftplistDim.txt`";
#echo "$linetmp";
linetmp1=`echo "$linetmp" | awk '{print $1}'`
#echo "$linetmp1"
if [ -z "$linetmp1" ]
then
#echo 'new';
linetmp1=`echo "$line" | awk '{print $1}'`
#echo "$linetmp1"
echo "$linetmp1" >> newDir.txt
fi
done < logglistDim.txt

#wysylanie na FTP z listy

if [  -f '/opt/zeletronik/ramdisk/newDir.txt' ]
then


cd $logDir;

(
echo "user $ftpUser $ftpPasswd";
echo "cd $ftpDir";
#poczatek czytania wykazu pliku.
while read line 
do 
echo "put $line";
done < /opt/zeletronik/ramdisk/newDir.txt;
echo "bye";
) | ftp -n ftp.republika.pl

#rm /opt/zeletronik/ramdisk/newDir.txt
else
echo "Brak nowych plikow" >> /opt/zeletronik/ramdisk/outlog.txt 
fi

