Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
565 connectés 

  FORUM HardWare.fr
  Programmation
  Perl

  Le méme mais qui ne fonctionne pas... lol

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Le méme mais qui ne fonctionne pas... lol

n°1220171
yohannsk
....
Posté le 11-10-2005 à 10:10:04  profilanswer
 

Bonjour amis programmeurs en tous genres!  :hello:  
 
Voila, je vous expose mon probléme, je posséde un script en perl qui va cherché via ftp des logs sur un serveur distant, ce script fonctionne pour les logs du client A. Or les logs d'un client B et C qui sont sur la méme machine (Un Windows.... lol) mais dans un repertoire juste à coté ne sont pas téléchargé avec ce méme script perl.....
 
Je travaille sous une RedHat et les droits des fichiers semblent étre bons. Quand je lance pour le client A dans un terminal, j'ai :  
 
[root@awstats client_A]# perl get.pl
Downloading ex051003.log...done
[root@awstats client_A]#
 
Et pour le client B et C j'ai:
 
[root@awstats client_B]# perl get.pl
[root@awstats client_B]#
 
Rien n'a l'air de se passer....
 
Quelqu'un aurait il une idée s'il vous plait car je suis vraiment bloqué...
Au pire connétriez vous une syntaxe que je puisse rajouter dans mon script perl pour voir l'éxécution du script dans mon terminal... Je n'ai pas trouvé une telle commande...
 
En vous remerciant par avance
 
SK!!
 
 


---------------
Il vaut mieux se taire et passer pour un con, plutot que l'ouvrir et prouver que l'on en est bien un....
mood
Publicité
Posté le 11-10-2005 à 10:10:04  profilanswer
 

n°1220276
onizuka_se​nsei
Posté le 11-10-2005 à 11:33:13  profilanswer
 

Je pense qu'il y a une erreur à la 14e ligne de ton script :o

n°1220281
Elmoricq
Modérateur
Posté le 11-10-2005 à 11:36:39  profilanswer
 

Clair, je ne vois pas comment on peux t'aider, là.
 
Euh, il y a un serveur FTP sur toutes les machines sur lesquelles tu vas chercher ton fichier ?

n°1220300
yohannsk
....
Posté le 11-10-2005 à 12:12:28  profilanswer
 

Merci d'avoir répondu
 
Je pense qu'il y a une erreur à la 14e ligne de ton scrip  
 
lol  
 
J'ai hésité à mettre le script mais comme il marche pour le dossier juste à coté je pensais que ce n'était pas nécéssaire, le voici :
 
#!/usr/bin/perl
 
#Recupere les fichiers de logs cree il y a $n jours
use strict;     #Syntaxe stricte
use Net::FTP;   #charge le module netftp
use POSIX qw(strftime);  #charge la fonction strftime
use IO::Handle;   #charge le module IOHandle
 
STDOUT->autoflush(1);  #enlever le buffer sur stdout
my $n = 0;    
 
my ($adresse,$login,$pass,$rep) = ("XX","XX","XX","XX" ); #définir 4 variables, mettre my pour dire que les variables sont locales
 
my $ftp = Net::FTP->new($adresse, Debug => 0) or die "Unable to connect to $adresse\n";  #crée un nouvel objet netftp qui s'appelera $ftp
$ftp->login($login,$pass) or die "Unable to log in : $ftp->message\n";  
#méthode login sur l'objet ftp
$ftp->cwd($rep) or die "Unable to cd to $rep : $ftp->message\n";
my @lines = $ftp->ls;   #récupére chaque ligne du tableau avec le nom du fichier
 
foreach(@lines) {
  my @ftime = localtime($ftp->mdtm($_));#récupère le temps de modification du fichier courant
  my @ltime = localtime(time-$n*86400);#récupére la date d'il y a n jours
  if ($ftime[5] == $ltime[5] && $ftime[4] == $ltime[4] && $ftime[3] ==
      $ltime[3]) {
    print "Downloading $_...";
    $ftp->get($_);  #téléchargement du fichier de logs en question
    print "done\n";
  }
}
 
$ftp->quit;
 
Or ce script fonctionne dans un cas mais pas dans l'autre.
Voici l'architecture du serveur D:\dossier\A\logs
et D:\dossier\B\logs, la procedure marche trés bien pour la A, mais ne marche pas pour le B....
 
Savez vous ce que veux dire le fait que lorsqu'on lance le script, rien ne se passe et il n'y a pas de message d'erreur, puis j'ai une nouvelle invite de commande.... ?
 

Citation :

[root@awstats client_B]# perl get.pl
[root@awstats client_B]#


 
Merci par avance


---------------
Il vaut mieux se taire et passer pour un con, plutot que l'ouvrir et prouver que l'on en est bien un....
n°1220571
yohannsk
....
Posté le 11-10-2005 à 17:00:52  profilanswer
 

Je remets mon sujet en haut de la pile une derniére fois, j'ai beau cherché, cela reste un mystére......
 
Je prends toutes les idées, sinon merci quand méme.
 
SK  :hello:


---------------
Il vaut mieux se taire et passer pour un con, plutot que l'ouvrir et prouver que l'on en est bien un....
n°1220578
Elmoricq
Modérateur
Posté le 11-10-2005 à 17:07:19  profilanswer
 

Vu qu'il y a tous les contrôles d'erreur nécessaires, et qu'il n'y a pas de message d'erreur, je ne vois qu'une possibilité, celle qu'aucun fichier ne correspond à la condition :

if ($ftime[5] == $ltime[5] && $ftime[4] == $ltime[4] && $ftime[3] == $ltime[3])


 
[:spamafote]
 
 
(par contre pas mal de commentaires sont inutiles et alourdissent la lecture, un commentaire ne devrait servir qu'à expliquer une partie ardue du code, ou à décrire l'utilité d'un bloc de code)


Message édité par Elmoricq le 11-10-2005 à 17:08:53
n°1220600
yohannsk
....
Posté le 11-10-2005 à 17:32:47  profilanswer
 

Merci pour ton aide Elmorlcq!
 
Ta remarque est trés pertinante donc j'ai regardé, et ce sont en fait exactement les méme fichiers de logs qui sont présents dans le client A et le client B, comme il trouve les fichiers pour le client A, (condition remplie), je ne comprend pas pourquoi la condition ne serait pas remplie pour le client B, étant donné que l'on a deux fichiers identiques?
 
Pour les commentaires, je suis d'accord mais ce n'est pas moi qui est réalisé ce script donc afin de tout saisir, on m'a mis des commentaires.
 
Tu as l'air de t'y connaitre en perl, j'ai cherché sans succés, une commande perl que je pourrais rajouter dans le programme afin de voir ce que mon script exécute durant son passage dans le terminal. Ceci afin d'avoir une piste pour chercher... Connaitrais tu une telle commande? :??:  
 
Merci par avance   :)  
 
SK


---------------
Il vaut mieux se taire et passer pour un con, plutot que l'ouvrir et prouver que l'on en est bien un....
n°1220609
pospos
Posté le 11-10-2005 à 17:38:24  profilanswer
 

print

n°1220610
Elmoricq
Modérateur
Posté le 11-10-2005 à 17:38:48  profilanswer
 

yohannsk a écrit :

et ce sont en fait exactement les méme fichiers de logs qui sont présents dans le client A et le client B, comme il trouve les fichiers pour le client A, (condition remplie)


 
Pas forcément.
 
La condition, c'est que la date (aujourd'hui - $n jours) soit identique à la date de dernière modification du fichier.
 
Si tu as recopié le fichier sur le client B pour le tester, sa date de modification sera différente de celle du client A, alors que pourtant le contenu est identique.
 
Sous Windows comme sous Unix tu peux vérifier la date de dernière modification en vérifiant les propriétés du fichier en question.


Message édité par Elmoricq le 11-10-2005 à 17:39:42
n°1220953
yohannsk
....
Posté le 12-10-2005 à 08:55:50  profilanswer
 

Mon cher Elmoricq, en effet l'habit ne fait pas le moine, j'avias deux fichiers ex051003.log, identiques par le nom dans chaque dossier mais comme tu m'a fait le remarquer, la date n'était pas valide, en effet pour le client A j'avais un fichier qui daté du 11 octobre, qui est dans la troisiéme semaine du mois d'octobre de 2005 d'ou ex051003, et pour le client B un fichier qui daté du 9 octobre, qui est dans la troisiéme semaine du mois d'octobre de 2005 d'ou ex051003 mais qui ne satisfasait pas la condition.....
 
Donc voila, y'a un probléme de configuration de génération des logs.... Va falloir y remédier mais ma hiérarchie le fera... ;)  ;)  
 
Ton aide me fut trés précieuse et je t'en remercie. Bien à toi
 
P.S: pour pospos,il me semble que print affiche plutot ce que l'on écrit dans le programme et non ce qu'éxécute le programme....
 
++ SK!!  :hello:


---------------
Il vaut mieux se taire et passer pour un con, plutot que l'ouvrir et prouver que l'on en est bien un....

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Perl

  Le méme mais qui ne fonctionne pas... lol

 

Sujets relatifs
Fonctionne sous l'interface de développement, l'exécutable plante ?Requete qui fonctionne qu'a motie
Pourquoi URLConnection fonctionne sur un pc, pas sur l’autre ??Pourquoi URLConnection fonctionne sur un computer, pas sur l’autre ??
Pourquoi URLConnection fonctionne sur un pc, pas sur l’autre ??Base qui reste vide mais le script fonctionne
Un "rollover" en CSS ne fonctionne pas, contrairement aux autresComment fonctionne un automate Programmable?
[SQL] Mais comment fonctionne la fonction ENCRYPT[ACCESS]recherche par caractère générique (par ex.*)ne fonctionne pas
Plus de sujets relatifs à : Le méme mais qui ne fonctionne pas... lol


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR