Petit Script Bash ( Modeste )

Moderator: Mod

Petit Script Bash ( Modeste )

Postby BELOC » Wed Jan 19, 2011 3:23 am

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]
BELOC
Projets
 
Posts: 5
Joined: Mon Jan 10, 2011 12:21 am

Postby AASSFXXX » Sat Jul 16, 2011 10:57 am

Bonjour,

Quel est le rapport avec le C/C++? :roll:
AASSFXXX
Projets
 
Posts: 11
Joined: Fri Jun 19, 2009 7:27 pm

Postby Manu404 » Sat Jul 16, 2011 11:37 pm

Serait pas plus simple d'utiliser curl ?

EDIT : Au fait merci pour le déterrage de topic... :roll:
User avatar
Manu404
 
Posts: 2219
Joined: Tue Feb 26, 2008 3:44 pm
Location: ::1:


Return to C/C++

Who is online

Users browsing this forum: No registered users and 1 guest

cron