lundi 19 janvier 2009

Télécharger un fichier avec la commande wget

Pour télécharger un fichier en ligne de commande à partir d'une adresse IP, vous pouvez utiliser la commande wget.

  • 1ere solution : télécharger le fichier et le stocker au niveau du répertoire courant

wget http://**.***.**.***/file.html

  • 2eme solution : télécharger le fichier et le stocker dans un répertoire particulier (avec l'option -O)

wget http://**.***.**.***/file.html -O cheminDeStockage/monFichier

  • 3eme solution : télécharger le fichier et ne pas générer de sortie à la console (avec l'option --quiet)

wget --quiet http://**.***.**.***/file.html

  • 4eme solution : effectuer plusieurs essais en cas d'échec de téléchargement (avec l'option --tries)

wget http://**.***.**.***/file.html --tries=5

  • 5eme solution : effectuer plusieurs essais de n secondes chacun  (avec les options --tries et --timeout)

wget --tries=2 --timeout=5 http://**.***.**.***/file.html

  • 6eme solution : effectuer un téléchargement en passant par un proxy

http_proxy="http://adresseDuProxy:Port" (exemple : http_proxy="http://**.**.***.***:8080"
wget --proxy-user "*****" --proxy-passwd "*******" http://adressePageATelecharger/ --proxy="on"


Pour plus d'options, je vous recommande de lire le man de cette commande :

Posté par fatihaelh - - ksh - Commentaires [0] - Rétroliens [0] - Permalien [#]


jeudi 20 novembre 2008

Tester si un fichier existe et est non vide (en ksh)

En ksh, c'est simple tout est optimisé, concis et clair !

Alors en une ligne et en très peu de commandes, ci-dessous un test à utiliser et à ré-utiliser pour tester si un fichier existe et est non vide :

if [[ -e $PATH && -s $PATH  ]]
then

#placer votre code ici
fi

ps : code récupéré lors de ma formation en ksh (formation IBM AL32FR)

Pour info : sur ce site vous trouverez d'autres tests.

Posté par fatihaelh - - ksh - Commentaires [0] - Rétroliens [0] - Permalien [#]

mardi 18 novembre 2008

Date de la veille en ksh

Vous devez récupérer les fichiers de logs de la veille (ayant pour extension une date) et vous ne savez pas comment faire. Si on soustrait un jour et que nous sommes le premier jour du mois par exemple ?? Ou encore, si nous sommes le 1er jour de l'année, nous passons dans ce cas à l'année précédente.

Sachez que j'ai trouvé un script fonctionnel sur ce site : commentcamarche.net
Merci Slamagirand!

J'ai juste le format de la date :
#!/bin/ksh
#
# fonction qui recupere la date de la veille :
# date -d '1 days ago'
#
YESTERDAY=$((`date +%d` -1))
MONTH=`date +%m`
YEAR=`date +%Y`
NDAY=`date +%u`
#
if [ $YESTERDAY -eq "0" ];
then
#
MONTH=$((MONTH-1))
#
if [ $MONTH -eq "0" ];
then
#
MONTH=12
YEAR=$((YEAR-1))
#
fi
#
set `cal $MONTH ${YEAR}`
shift $(($# - 1))
YESTERDAY=$1
#
fi
########################################################
PATH="/Path/monFichierDeLogs${YEAR}-${MONTH}-${YESTERDAY}..log"

echo $PATH

Posté par fatihaelh - - ksh - Commentaires [2] - Rétroliens [0] - Permalien [#]

lundi 27 octobre 2008

Date en ksh

20081027183742

Comment obtenir ce type de date en ksh ?

20081027183742 soit année en quatre chiffres + mois en deux chiffres + jour en deux chiffres + heure au format 24h et non 12h + minutes + secondes

Vous utilisez la fonction date à laquelle vous passez les paramètres adéquates à savoir :

# initialisation d'une variable VarDate, attention, ce sont des anti-quotes (Alt Gr+7 sur votre clavier)
VarDate=`date +%Y%m%d%H%M%S`

# affichage de la date en question, attention une fois stockée dans la variable, cette date ne peut être dynamique.
echo $Date

ça donne ceci :
20081027183742

# création d'un fichier de log avec la date
touch log_file_${Date}.log

ça donne ceci :
-rw-r--r--   1 user1 group1  0 Oct 27 18:44 log_file_
20081027183742.log

Ceci s'avère très pratique aussi pour les commentaires au sein de vos fichiers de logs.

Pour connaître les différents formats de date, tapez "man date" dans votre terminal Linux préféré ou bien visitez ce site.

Posté par fatihaelh - - ksh - Commentaires [0] - Rétroliens [0] - Permalien [#]

jeudi 23 octobre 2008

cut and paste in ksh for weekly reports instead of daily reports

Si comme moi, on vous demande au dernier moment un fichier reporting hebdomadaire alors qu'au départ c'était censé être un fichier reporting quotidien, je vous recommande ces quelques lignes ci-dessous.

Le but est de concaténer ligne à ligne les différents fichiers que vous avez déjà généré au préalable.

1ère étape : couper les lignes correspondant aux colonnes souhaitées et les coller dans un fichier temporaire.

Dans mon exemple, je n'ai qu'une seule colonne, d'où l'utilisation de -f2 (en vert) dans la ligne de commande. De plus, mon séparateur de colonnes est le point-virgule : -d\; (en bleu).

cut -d\; -f2 result.Tuesday.csv > result.Tuesday.tmp.csv;

cut -d\; -f2 result.Wednesday.csv > result.Wednesday.tmp.csv;

cut -d\; -f2 result.Thursday.csv > result.Thursday.tmp.csv;

cut -d\; -f2 result.Friday.csv > result.Friday.tmp.csv;

2ème étape : concaténation des fichiers générés via la commande cut.

paste -d\; result.Monday.csv result.Tuesday.tmp.csv result.Wednesday.tmp.csv result.Thursday.tmp.csv result.Friday.tmp.csv > result.weekly.csv;

3ème étape : suppression des fichiers temporaires.

rm result.*.tmp.csv

Posté par fatihaelh - - ksh - Commentaires [0] - Rétroliens [0] - Permalien [#]

vendredi 26 septembre 2008

Bref aperçu des tableaux en ksh

J'ai suivi il y a un mois une formation à la programmation ksh et tous les jours j'essaie de mettre en application ce que j'y ai appris. J'optimise mes scripts ou plutôt pseudo-scripts. De ce fait, nous allons voir comment manipuler un tableau en ksh.

Initialisation d'un élément d'un tableau :
tab[0]="valeur 0"
tab[1]="valeur 1"
tab[2]="valeur 2"
...
tab[n]="valeur n"

Accès aux éléments du tableau :
${tab[0]}
${tab[1]}
...
${tab[n]}

Attention pour indiquer le contenu entier d'un tableau, ne surtout pas utiliser $tab ! En effet, $tab correspond uniquement au 1er élément d'un tableau :
$tab identique à $tab[0]

Contenu entier d'un tableau :  ${tab[@]}

Exemple :
Je crée un script permettant d'exécuter quatre scripts ksh et de m'envoyer le résultat global : 0 si l'un des programmes retourne une erreur et 1 si TOUS les programmes sont OK. Ce type de programme peut être programmé dans le cron et lancé à intervalle régulier, le cron enverra un mail s'il y a une erreur. Une autre application possible est de lancer à distance ce programme via une application de supervision (zabbix par exemple).

$tab[0]=`/users/toto/prog1.ksh` #prog1.ksh renvoie 0 si KO et 1 si OK
$tab[1]=`/users/toto/prog2.ksh`  #prog2.ksh renvoie 0 si KO et 1 si OK
$tab[2]=`/users/toto/prog3.ksh`  #prog3.ksh renvoie 0 si KO et 1 si OK
$tab[3]=`/users/toto/prog4.ksh`  #prog4.ksh renvoie 0 si KO et 1 si OK

for i in ${tab[@]}
do
    if [[ $i -eq 0 ]]
    then
        echo "0"
        exit
    fi
done

# si aucune erreur le programme retourne par défaut 1
echo "1"

Posté par fatihaelh - - ksh - Commentaires [2] - Rétroliens [0] - Permalien [#]
« Accueil  1