Forums Rue-Montgallet.com
Rue-Montgallet.comRue-Hardware.comRue-Occasion.comRue-DVD.comRue-Jeuxvideo.comRue-AudioVideo.comRue-Telephone.comForums
S'inscrire | S'identifier |
| Recherche avancée | Aide
 
 

phak77, piranha Programmation : Chawki, 1 utilisateur anonyme et 43 utilisateurs inconnus

 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet :

[HP-UX / KSH] script tordu

 
n°2247
coyotito
05 Octobre 1998 - 01 Mars 2004
Profil : Habitué
Posté le 30-10-2002 à 16:37:51  profilanswer
 

Salut à tous,
 
je travaille sur un vieux serveur HP-UX et dessus je dois modifier un script  qui tourne dessus : à l'heure actuelle ce script prend chaque ligne d'un fichier toto.conf (qui correspondent à des équipement informatiques) et envoie une série de requêtes ping sur ces équipements.
 
 Or j'ai une pléthore de requêtes, et je perds des mesures chercher à diviser le fichier conf en plusieurs petits paquets d'équipements, afin de pouvoir traiter chaque petit fichier en // et éviter de perdre des mesures.
 
Y a t il une commande Unix pour decouper un fichier au format texte en plusieurs morceaux dont on spécifie le nombre de lignes. Je sais que c'est chiant mon pb, merci d'avance pour vos réponses :)

n°2248
Rutkowski
L'inventeur du concept "team"
Profil : Vieux de la vieille
Posté le 30-10-2002 à 19:45:24  profilanswer
 

de mémoire : split
 
edit : perso, j'utilisais csplit.
 
cette commande n'est pas spécifique HP-UX


Message édité par Rutkowski le 30-10-2002 à 20:00:44

---------------
Les SPA ne vivent que par vos dons. Pensez-y !
Co-fondateur de Square Avalanche Team - Pro TRPG
Machoc rulez
n°2250
coyotito
05 Octobre 1998 - 01 Mars 2004
Profil : Habitué
Posté le 30-10-2002 à 20:15:46  profilanswer
 

Rutkowski a écrit :

de mémoire : split
 
edit : perso, j'utilisais csplit.
 
cette commande n'est pas spécifique HP-UX




 
effectivement ça n'a pas l'air mal je vais essayer de creuser de ce côté :)
Merci :jap:

n°2251
Rutkowski
L'inventeur du concept "team"
Profil : Vieux de la vieille
Posté le 30-10-2002 à 20:20:08  profilanswer
 

that's a pleasure


---------------
Les SPA ne vivent que par vos dons. Pensez-y !
Co-fondateur de Square Avalanche Team - Pro TRPG
Machoc rulez
n°2289
Hinou
Possède blague a 2 balle a +10
Profil : Membre
Posté le 04-11-2002 à 14:39:05  profilanswer
 

sinon tu utilise un ptit script perl du genre  
 
tant que ton fichier est pas fini  
 
lis x nombre de ligne
copie tes ligne dans un autre fichier
change de fichier
 
enfin si ta pas de package perl sur ton hp tu risque de te faire plus chier qu'autre chose


---------------
Administer c'est bien développer c'est mieux
Créateur de l'association des "elfes de la forest" (balançage de troll en tous genre)
Créateur de l'anti-cs team (cs c'est un mod pas un jeux :na:)
n°2290
coyotito
05 Octobre 1998 - 01 Mars 2004
Profil : Habitué
Posté le 04-11-2002 à 14:42:35  profilanswer
 

non il est très rustique ce serveur je dispose du minimum :(


---------------
"Il ne faut pas désépérer des imbéciles, avec un peu d'entraînement on peut réussir à en faire des militaires..." © Pierre Desproges
n°2292
Rutkowski
L'inventeur du concept "team"
Profil : Vieux de la vieille
Posté le 04-11-2002 à 14:43:41  profilanswer
 

en plus, quel intérêt de faire une commande qui existe déjà ?


---------------
Les SPA ne vivent que par vos dons. Pensez-y !
Co-fondateur de Square Avalanche Team - Pro TRPG
Machoc rulez
n°2293
coyotito
05 Octobre 1998 - 01 Mars 2004
Profil : Habitué
Posté le 04-11-2002 à 14:54:34  profilanswer
 

en fait ce que je veux faire c'est :
 
- Disloquer un fichier .conf en plusieurs blocs
 
- ecrire un script qui gere l'application d'un traitement sur chacun de ces petits fichiers .conf en parallèle
 
 
 
tout ca pour gagner du temps par rapport au traitement serie du gros fichier .conf
 
ps : le traitement c'est pour chacun des equipements d'un fichier conf (1 ligne=equipement) on ping l'equipement


---------------
"Il ne faut pas désépérer des imbéciles, avec un peu d'entraînement on peut réussir à en faire des militaires..." © Pierre Desproges
n°2295
Rutkowski
L'inventeur du concept "team"
Profil : Vieux de la vieille
Posté le 04-11-2002 à 15:11:05  profilanswer
 

et pourquoi ne pas lancer mettons 10 pings par 10 pings en tâche de fond et recommencer la boucle après un wait sur les 10 tâches de fond jusqu'à épuisement des lignes du fichier. Ainsi, pas besoin de split


---------------
Les SPA ne vivent que par vos dons. Pensez-y !
Co-fondateur de Square Avalanche Team - Pro TRPG
Machoc rulez
n°2298
coyotito
05 Octobre 1998 - 01 Mars 2004
Profil : Habitué
Posté le 05-11-2002 à 09:53:05  profilanswer
 

c'est à dire ?

n°2300
Rutkowski
L'inventeur du concept "team"
Profil : Vieux de la vieille
Posté le 05-11-2002 à 11:19:45  profilanswer
 

laisse moi un peu de temps et j'essaie de pondre un truc simplifié


---------------
Les SPA ne vivent que par vos dons. Pensez-y !
Co-fondateur de Square Avalanche Team - Pro TRPG
Machoc rulez
n°2301
coyotito
05 Octobre 1998 - 01 Mars 2004
Profil : Habitué
Posté le 05-11-2002 à 11:21:24  profilanswer
 

ok merci :)

n°2302
Rutkowski
L'inventeur du concept "team"
Profil : Vieux de la vieille
Posté le 05-11-2002 à 12:07:44  profilanswer
 

bon compare les 2 scripts suivants quasi identiques :
( réalisés sous cygwin en bash, donc syntaxe légèrement différente sous HP-UX en ksh )
 
programme ping.sh :
 
pingplus ()
{
toto=`ping -n 1 $1|grep "perte 100%"`
if test "$toto" != ""  
then
  echo "Attention : equipement $1 non pingable"
fi
}
pingplus forum.rue-montgallet.com
pingplus www.rue-montgallet.com
pingplus www.newdimension-fr.net
pingplus www.clubic.com
 
programme ping_optimise.sh :
 
pingplus ()
{
toto=`ping -n 1 $1|grep "perte 100%"`
if test "$toto" != ""  
then
  echo "Attention : equipement $1 non pingable"
fi
}
pingplus forum.rue-montgallet.com &
pingplus www.rue-montgallet.com &
pingplus www.newdimension-fr.net &
pingplus www.clubic.com &
wait
 
 
un time sur ces 2 programmes me donne sous windows :
0.428 ey 0.354 respectivement dû au fait que le programme optimisé exécute les 4 pings en même temps avant de terminer le programme alors que le premier les exécute séquentiellement.
Maintenant :  
- il n'y a que 4 adresses ici et toutes valides.
- je suis sous windows
 
Donc : cette technique adaptée ( avec plus de développement bien sûr pour inclure une boucle de wait sur disons 20 équipements par exemple ) à beaucoup d'équipements te fera gagner beaucoup de temps


---------------
Les SPA ne vivent que par vos dons. Pensez-y !
Co-fondateur de Square Avalanche Team - Pro TRPG
Machoc rulez
n°2303
coyotito
05 Octobre 1998 - 01 Mars 2004
Profil : Habitué
Posté le 05-11-2002 à 12:11:32  profilanswer
 

Rutkowski a écrit :

bon compare les 2 scripts suivants quasi identiques :
( réalisés sous cygwin en bash, donc syntaxe légèrement différente sous HP-UX en ksh )
 
programme ping.sh :
 
pingplus ()
{
toto=`ping -n 1 $1|grep "perte 100%"`
if test "$toto" != ""  
then
  echo "Attention : equipement $1 non pingable"
fi
}
pingplus forum.rue-montgallet.com
pingplus www.rue-montgallet.com
pingplus www.newdimension-fr.net
pingplus www.clubic.com
 
programme ping_optimise.sh :
 
pingplus ()
{
toto=`ping -n 1 $1|grep "perte 100%"`
if test "$toto" != ""  
then
  echo "Attention : equipement $1 non pingable"
fi
}
pingplus forum.rue-montgallet.com &
pingplus www.rue-montgallet.com &
pingplus www.newdimension-fr.net &
pingplus www.clubic.com &
wait
 
 
un time sur ces 2 programmes me donne sous windows :
0.428 ey 0.354 respectivement dû au fait que le programme optimisé exécute les 4 pings en même temps avant de terminer le programme alors que le premier les exécute séquentiellement.
Maintenant :  
- il n'y a que 4 adresses ici et toutes valides.
- je suis sous windows
 
Donc : cette technique adaptée ( avec plus de développement bien sûr pour inclure une boucle de wait sur disons 20 équipements par exemple ) à beaucoup d'équipements te fera gagner beaucoup de temps
 




 
je vais essayer d'adapter ceci à mon cas, je te remercie beaucoup :jap:


---------------
"Il ne faut pas désépérer des imbéciles, avec un peu d'entraînement on peut réussir à en faire des militaires..." © Pierre Desproges
n°2571
aoko_6o6
Le poulet de la persécution
Profil : Membre
Posté le 06-12-2002 à 03:56:00  profilanswer
 

:hello:
 
Oula !!! Le bon code shell !! :D :lol: Souvenirs souvenirs :lol:
 
Perso je ferais soit un sed
ou alors j'utiliserai awk
ou encore un 'tit script PERL (avec un push et une bonne regex...)
 
Rutkow> Tu me diras que ton code marche bien ! C'est vrai ! Cependant je préfère les codes qui bouffent le moins possible de ressources systèmes hors ici avec des if sur 4 adresses c'est tout cool mais imagine que tu ais 2000 adresses à faire !?! Tu executes à chaque fois la boucle if ce qui a pour conséquence d'utiliser plus de ressources que ce que l'on peut faire avec d'autres outils... maintenant il existe peut etre des trucs encore plus performants que ce que je propose :lol: et ton post est très bien construit donc :jap: pour le temps passé à le faire et le soucis de simplicité !!! De plus pour les besoins de Coyotito il se peut que se soit ton script qui soit le meilleur...
 
Coyotito> Je te posterai demain un script perl que je te ferai pour l'occasion mais là suis trop fatigué pour ca !!! Bien sur cela ne sera qu'à titre informatif puisque tu n'as pas perl sur ton nix... D'ailleurs j'essairai de faire un script gébéraliste qui reprendra plus de choses... pour m'amuser ! Demain en fin de matinée j'ai pas trop de trucs de prévus au boulot :lol:
 
Bonne nuit à demain...
 
PS : maintenant qu'il existe une sous section *nix dans OSA je ne sais pas s'il ne serait pas bien de déplacer ce topic dedans ? Simple question...


Message édité par aoko_6o6 le 06-12-2002 à 04:05:00
n°2573
Rutkowski
L'inventeur du concept "team"
Profil : Vieux de la vieille
Posté le 06-12-2002 à 04:48:09  profilanswer
 

merci pour ton soutien et tes remarques pertinentes.
C'est vrai que le Perl bouffe moins de ressources système mais malheureusement je ne m'y suis jamais mis. remarque : sous cygwin, y'a un package de conversion shell vers Perl qui marche très bien. A l'occasion, faudra que je teste la diff de perfs


---------------
Les SPA ne vivent que par vos dons. Pensez-y !
Co-fondateur de Square Avalanche Team - Pro TRPG
Machoc rulez
n°2594
aoko_6o6
Le poulet de la persécution
Profil : Membre
Posté le 06-12-2002 à 18:43:39  profilanswer
 

Bon alors je te donne ici un petit bout de code en perl.
 
Ce code te permettra de :
lire un fichier au format "champ_1", "champ_2", "champ_n", "champ_n+1"
séparer tous les champs dans un tableau (array) nommé champs
De plus :
il accepte les champs sans double quotes
il accepte les champs vides
il est super rapide et peu gourmand (testé sur 5000 fichiers en simultanés il bouffe moins de 1% des ressources système sur une machine digital octo alpha)
 

Code :
  1. @champs=();
  2. while($texte=~ m/"([^"\\]*(\\.[^"\\]*)*)",?|([^,]+),?|,/g) {
  3.    push(@champs, defined($1)?$1:$3);
  4. }
  5. push(@champs, undef) if $texte=~ m/,$/;


 
Alors tu me diras que je ne répons pas à la question ! Et bien c'est un peu fait exprès !! :D
En fait le format du fichier peu aisement etre changé par la regex mais en fait G surtout voulu t'introduire ici la lecture d'un fichier excel (export csv) qui te permettrai de gérer ton parc entier dans un tableur !
Ainsi ton ping pourrait il se faire sur simplement le champs[3] correspondant à la colonne IP dans ton tableur...
M'enfin voilà... juste pour dire que c'etait rigolo ce que l'on pouvait faire...
 
:hello:

n°2598
Rutkowski
L'inventeur du concept "team"
Profil : Vieux de la vieille
Posté le 07-12-2002 à 00:44:18  profilanswer
 

intéressant, on sent bien le gars qui maîtrise le sed, derrière  :D  
J'ai décidé de me mettre au Perl  :o , c'est une lacune pour un admin système
Ce soir, je suis trop naze, mais dès demain, je m'y mets


---------------
Les SPA ne vivent que par vos dons. Pensez-y !
Co-fondateur de Square Avalanche Team - Pro TRPG
Machoc rulez
n°2600
Rutkowski
L'inventeur du concept "team"
Profil : Vieux de la vieille
Posté le 07-12-2002 à 03:39:51  profilanswer
 

autant pour moi : il y a un utilitaire de traduction awk -> Perl et non shell -> Perl


---------------
Les SPA ne vivent que par vos dons. Pensez-y !
Co-fondateur de Square Avalanche Team - Pro TRPG
Machoc rulez
n°2607
coyotito
05 Octobre 1998 - 01 Mars 2004
Profil : Habitué
Posté le 09-12-2002 à 16:56:20  profilanswer
 

merci à aoko et rutkowski pour vos réponses que j'ai vues tardivement :'(
j'ai trouvé une solution en adaptant un script développé par une personne ma boite
 
pour resumer, je separe les fichiers d'entree en plusieurs blocs avec split
j'utilise le fameux script, qui ressemble bueacoup à ce qu'a posté rutko d'ailleurs.
 
je passe $1 en parametre dans le scirpt pour pouvoir l'appliquer à tous les fichiers d'entree
ça marche pas mal apparemment, je reprends ce programme le mois prochain quand je retourne à la boite :D


---------------
"Il ne faut pas désépérer des imbéciles, avec un peu d'entraînement on peut réussir à en faire des militaires..." © Pierre Desproges
n°2609
Rutkowski
L'inventeur du concept "team"
Profil : Vieux de la vieille
Posté le 09-12-2002 à 17:02:15  profilanswer
 

cool !


---------------
Les SPA ne vivent que par vos dons. Pensez-y !
Co-fondateur de Square Avalanche Team - Pro TRPG
Machoc rulez
n°2611
coyotito
05 Octobre 1998 - 01 Mars 2004
Profil : Habitué
Posté le 09-12-2002 à 17:08:23  profilanswer
 

à vrai dire je bosse sur pas mal de ces petits progs à la fois, et des fois y'en a qui tombent dans l'oubli, surtout quand je retourne à l'IUT :D


---------------
"Il ne faut pas désépérer des imbéciles, avec un peu d'entraînement on peut réussir à en faire des militaires..." © Pierre Desproges

Aller à :
Ajouter une réponse