Bonjour,
Voici un petit modeste script batch pour faire en gros le téléchargement d'un groupe de fichier à partir d'un FTP.
Je note la suite des explications dans quelques minutes ...
[code:1:d03b80ea81]#!/bin/bash
#Required ; lftp ; zenity ; par2 ; unrar ; md5sum
COMPANY="****"
DATE_LAST_UPDATE=`head -n 1 /var/lib/****.txt`
DATE_NEXT_UPDATE=$((DATE_LAST_UPDATE+1))
LOGIN=`hostname`
PASS=*******
SERVER="192.168.69.200"
MOUNT_POINT="/media/******"
TMP_REMOTE="/tmp/remote.tmp"
TMP_LOCAL="/tmp/local.tmp"
echo $DATE_NEXT_UPDATE | grep 20[0-9][0-9]13 >/dev/null
if [ $? -eq 0 ]
then
DATE_NEXT_UPDATE=$((DATE_NEXT_UPDATE+88))
fi
TEMP="/home/temp_online_update/$DATE_NEXT_UPDATE"
TEMP_OLD="/home/temp_online_update/$DATE_LAST_UPDATE"
PATH_ISO="$TEMP"_ISO
PATH_ISO_OLD="$TEMP_OLD"_ISO
START="OK"
function check_online_update
{
CHECK=`lftp -u $LOGIN:$PASS -e "ls;exit" $SERVER |grep $DATE_NEXT_UPDATE |tr -s ' '|cut -d" " -f 9`
if [ "$DATE_NEXT_UPDATE" = "$CHECK" ]
then
return 0
else
return 1
fi
}
function download_online_update
{
lftp ftp://$LOGIN:$PASS@$SERVER -e "mirror -c /$DATE_NEXT_UPDATE $TEMP;quit"
lftp -u $LOGIN:$PASS -e "ls $DATE_NEXT_UPDATE;exit" $SERVER|tr -s ' '|cut -d" " -f 5,9 > $TMP_REMOTE
ls -al $TEMP|tr -s ' '|cut -d" " -f 5,8|tail -n +4 > $TMP_LOCAL
diff $TMP_REMOTE $TMP_LOCAL > /dev/null
if [ $? -eq 1 ]
then
return 1
else
rm -rf $TMP_REMOTE > /dev/null
rm -rf $TMP_LOCAL > /dev/null
return 0
fi
}
function extract_online_update
{
par2 r $TEMP/$DATE_NEXT_UPDATE.par2
if [ ! -d $PATH_ISO ]
then
mkdir $PATH_ISO
fi
unrar x -o- $TEMP/$DATE_NEXT_UPDATE.part01.rar $PATH_ISO
cd "$PATH_ISO"
md5sum -c $DATE_NEXT_UPDATE.md5
if [ $? = 0 ]
then
rm -rf $TEMP
return 0
else
return 1
fi
}
function start_update
{
if [ ! -d "$MOUNT_POINT" ]
then
mkdir "$MOUNT_POINT"
else
umount "$MOUNT_POINT"
rm -rf "$PATH_ISO_OLD"
fi
mount -oloop $PATH_ISO/$DATE_NEXT_UPDATE.iso "$MOUNT_POINT"
if [ $? = 0 ]
then
"$MOUNT_POINT"/mlive.autorun
return 0
else
return 1
fi
}
check_online_update
if [ $? = 0 ]
then
while [ "$START" = "OK" ]
do
START="NOK"
zenity --question --text="A new update is available, start downloading the update?"
if [ $? = 0 ]
then
download_online_update
if [ $? = 0 ]
then
extract_online_update
if [ $? = 0 ]
then
start_update
if [ $? = 1 ]
then
zenity --error --text="Error downloading"
START="OK"
fi
else
zenity --error --text="Error while gathering files"
START="OK"
fi
else
zenity --error --text="Error during the launch of the updated"
START="OK"
fi
fi
done
fi
[/code:1:d03b80ea81]