Précédent   Forum des professionnels en informatique > Systèmes > Autres systèmes > Unix > Solaris
Solaris Forum d'entraide sur le système Solaris.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 05/09/2011, 10h37   #1
Invité de passage
 
Homme tsivery tanjona MARIPO
Administrateur systèmes et réseaux
Inscription : septembre 2011
Messages : 1
Détails du profil
Informations personnelles :
Nom : Homme tsivery tanjona MARIPO
Localisation : Madagascar

Informations professionnelles :
Activité : Administrateur systèmes et réseaux
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : septembre 2011
Messages : 1
Points : 0
Points : 0
Par défaut Recuperation automatique de la date de la veille en ksh (cron)

Pourriez vous m'aider s'il vous plait car j'ai un problème lors de la récupération de la date de la veille, j'ai obtenu yymmd au lieu de yymmdd (par exemple 11094 au lieu de 110904) lorsque je mets en cron mon script, mais il marche très bien si je l’exécute manuellement.

voici mon script:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#Aujourd'hui:
TODAY=`date +'%m-%d-%y'`

# element induviduels de la date:
MONTH=`echo $TODAY | cut -d'-' -f1`
DAY=`echo $TODAY | cut -d'-' -f2`
YEAR=`echo $TODAY | cut -d'-' -f3`

if [[ `expr $DAY + 0` -eq 1 ]]; then
if [[ $MONTH -eq 1 ]]; then
MONTH=12
YEAR=`expr $YEAR - 1`
else
MONTH=`expr $MONTH - 1`
fi

cal $MONTH $YEAR | grep 31 1>/dev/null 2>&1
if [[ $? -eq 0 ]]; then
DAY=31
else
DAY=30
fi
else
DAY=`expr $DAY + 0`
DAY=`expr $DAY - 1`
fi

if [[ `echo $MONTH | wc -c` -eq 2 ]]; then
MONTH=0$MONTH
fi
if [[ `echo $DAY | wc -c` -eq 2 ]]; then
DAY=0$DAY
fi

# Hier:
daty=$YEAR$MONTH$DAY
Merci de votre aide, cordialement.
maripo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/09/2011, 11h18   #2
Membre régulier
 
Inscription : mars 2009
Messages : 321
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 321
Points : 93
Points : 93
Bonjour,

Il me semble qu'il manque la ligne suivante en début de votre script

Après test de mon coté la valeur de daty passe bien

Bye
AAWOOPY56 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/09/2011, 11h46   #3
Membre Expert
 
Avatar de becket
 
Frédéric Brugmans
Informaticien multitâche
Inscription : février 2005
Messages : 661
Détails du profil
Informations personnelles :
Nom : Frédéric Brugmans

Informations professionnelles :
Activité : Informaticien multitâche

Informations forums :
Inscription : février 2005
Messages : 661
Points : 1 196
Points : 1 196
Pourquoi faire simple quand on peut faire compliqué ?

Code :
1
2
date --date '1 day ago' +'%y-%m-%d'
becket est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/09/2011, 13h13   #4
Membre régulier
 
Inscription : mars 2009
Messages : 321
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 321
Points : 93
Points : 93
Salut becket,

Très intéressante ta commande par contre lorsque je l'exécute en ligne de commande ça ne marche pas
Pourrais-tu être un peu plus précis dans l'écriture de ta commande

Code :
1
2
3
4
5
6
7
# date --date '1 day ago' +'%y-%m-%d'
date : option non admise : -
date : option non admise : d
date: invalid argument -- te
syntaxe :       date [-u] mmjjHHMM[[cc]aa][.SS]
        date [-u] [+format]
        date -a [-]sss[.fff]
AAWOOPY56 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/09/2011, 13h48   #5
Membre Expert
 
Avatar de becket
 
Frédéric Brugmans
Informaticien multitâche
Inscription : février 2005
Messages : 661
Détails du profil
Informations personnelles :
Nom : Frédéric Brugmans

Informations professionnelles :
Activité : Informaticien multitâche

Informations forums :
Inscription : février 2005
Messages : 661
Points : 1 196
Points : 1 196
Ces options ne sont disponibles que si tu as installé GNU date, sinon tu dois te servir de $TZ pour afficher le jour d'un autre fuseau horaire.
becket est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/09/2011, 14h04   #6
Membre régulier
 
Inscription : mars 2009
Messages : 321
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 321
Points : 93
Points : 93
Ok d'accord je comprends mieux l'astuce bon pour dire je n'ai pas GNU donc pas possible d'utiliser ta solution dommage

Merci A+
AAWOOPY56 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/11/2011, 15h07   #7
Membre confirmé
 
Homme
Développeur informatique
Inscription : octobre 2006
Messages : 181
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : octobre 2006
Messages : 181
Points : 267
Points : 267
J'ai trouvé ca qui marche :
Code :
echo `TZ=MET+24 date +"%D"`
sur un autre site.

Mais je veux bien que quelqu'un m'explique pas à pas comment ca marche ...
Jean.Cri1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/11/2011, 01h35   #8
Membre Expert
 
Avatar de jlliagre
 
Inscription : juin 2007
Messages : 967
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2007
Messages : 967
Points : 1 370
Points : 1 370
Cette commande n'est pas très fiable car elle fournit un résultat incorrect entre minuit et une heure (hiver) ou entre minuit et deux heures (été). La syntaxe "MET+24" est erronée car elle laisse penser qu'il s'agit du temps européen (MET= Middle European Time") décalé de 24 heures mais ce n'est pas le cas. Le nom du fuseau horaire n'est pas utilisé ici.

Elle affiche l'heure qu'il est dans un fuseau horaire hypothétique décalé de 24 heures par rapport au temps universel. Le problème est que nous ne sommes pas en temps universel mais en GMT+1 ou GMT+2 suivant la période.

Pour obtenir la date correcte du jour précédent, la commande est celle-ci:

Code :
TZ=std+23dst+22,M3.5.0/2,M10.5.0/3 date +"%D"
__________________
ɹǝsn *sıɹɐlos*
jlliagre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2011, 09h58   #9
Membre confirmé
 
Homme
Développeur informatique
Inscription : octobre 2006
Messages : 181
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : octobre 2006
Messages : 181
Points : 267
Points : 267
Merci jlliagre,
Les affectations possibles pour la variable TZ ne me sont pas du tout familiere et celle la en particulier reste encore obscure pour moi ...
Mais je me suis rendu compte que "date" ne fait pas parti de l'affectation ...
Je ne savais pas que l'on pouvait faire une affectation de variable suivi d'une commande sans saut de ligne ou ";" contrairement a deux commande successives.

Si "date" est sensible a TZ ( on voit bien qu'elle change quand on modifie TZ ) et que TZ et deja positionnée sur MET , est-ce que TZ +/-24 est fiable ou le rapport n'est il pas aussi simple comme je crois comprende ta réponse ?
Jean.Cri1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2011, 11h29   #10
Membre Expert
 
Avatar de jlliagre
 
Inscription : juin 2007
Messages : 967
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2007
Messages : 967
Points : 1 370
Points : 1 370
Si TZ est égal à MET, tu auras l'heure et la date locale exacte. Si TZ est +24, tu auras la date de GMT+24. Cette date sera incorrecte pendant une heure l'hiver et pendant deux heures l'été. Pas vraiment fiable donc.

Si tu positionne TZ avec la chaine que j'ai indiquée. La date sera toujours correcte sauf si on décide de changer la méthode de calcul des jours de changement d'heure ou si on supprime l'heure d'été.
__________________
ɹǝsn *sıɹɐlos*
jlliagre est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h03.


 
 
 
 
Partenaires

Hébergement Web