[Perl] Eviter les commandes system

Eviter les commandes system [Perl] - Perl - Programmation

Marsh Posté le 27-07-2013 à 23:49:22    

Bonjour,
 
J'ai une question d'optimisation de code.
Je suis sur un Server A et les logs que je dois parser sont sur le Server C.
Pour y accéder je passe par le Server B.
Il n'y a pas de syslog sur ces machines.
 
Je lance donc sur le Server A un script qui va lancer un second script sur le Server C,
Pour récupérer sur mon prompt les logs qui se trouve sur le Server C.
 
En schéma cela donne ça:
 
http://www.heberger-image.fr/data/images/35778_Sans_titre_1.jpg
 
Ma ligne de commande est:

Code :
  1. system("ssh user\@172.20.14.6 \"ssh user\@172.20.14.34 \\\"perl /home/user/script.pl $datetime\\\" \"  >> $FINAL_DIR$OUT_01" );


Pour moi c'est assez "moche" de faire ça, même si c'est fonctionnel.
A votre avis, comment réaliser ceci de façon plus professionnel et ceci sans passer par des commandes system ou qx?


Message édité par Sethenssen le 27-07-2013 à 23:50:01
Reply

Marsh Posté le 27-07-2013 à 23:49:22   

Reply

Marsh Posté le 28-07-2013 à 00:54:51    

Tu peux déjà essayer de passer par Net::SSH::Perl si tu dois absolument faire du SSH.
 
Mais en premier lieu, tu devrais plutôt réfléchir à la façon dont tu peux réorganiser cela.
 
Les logs doivent ils absolument se trouver sur le serveur C ? Tu ne peux pas les transférer périodiquement sur A ? les mettre à dispo via du NFS / CIFS ?

Reply

Marsh Posté le 28-07-2013 à 01:33:08    

Le package Net::SSH::Perl n'est pas installé sur le serveur A
Les logs sont sur le serveur C et ne peuvent se trouver ailleurs.
Pas possible de faire de montage NFS ou autre.
Le serveur C n'a pas accès au serveur A (question de sécurité).

Reply

Marsh Posté le 28-07-2013 à 04:27:14    

Donc, tu peux rien installer, rien modifier.
 
Dans ce cas, y'a aucun souci, tant que ca marche, autant ne pas toucher au bouzin.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed