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

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [SHELL] Une histoire "pipe"

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[SHELL] Une histoire "pipe"

n°1948941
tuxbleu
renie ses origines
Posté le 10-12-2009 à 10:27:19  profilanswer
 

Bonjour
 
Beaucoup trop compliqué à synthétiser dans un titre.
J'imagine que je suis pas le premier à essayer de faire ça, mais peut-etre que je me trompe de voie pour faire ce que j'aimerai faire :
 
J'ai un programme que j'ai écris (  [:volta] ) qui me permet de checker dans mes logs qui sont dans /var/log/auth ce qui concerne les connexions ssh de mes utilisateurs. Lequel programme peut utiliser différents paramètres, dont " -u " pour lequel je peux spécifier l'utilisateur qui m'intéresse. Appliqué tel quel, j'ai un affichage à l'écran des logs concernés
Exemple :  

./log_ssh -u tuxbleu


m'affiche les log de tuxbleu, et si je veux me stocker ca dans un fichier texte, je fais vulgairement

./log_ssh -u tuxbleu > tuxbleu.txt


 
Bon, magnifique. Mon idée maintenant, c'est de lancer ce programme pour tous mes users, sans les lister à la main un par un, et pour chaque user envoyer le résultat dans un fichier user.txt
Je me dis que la liste de mes users, c'est plus ou moins la liste des répertoires présents dans /home.
 
Donc j'aimerais passer en paramètre "-u" à ma fonction log_ssh la liste résultat de " ls /home/ "
 
un truc genre :

ls /home/ | ./log_ssh -u


Si vous voyez l'idée  :sweat:  
 
Ptet que le pipe c'est pas la bonne solution, et que je devrais insérer dans mon programme log_ssh un "for rep in /home loop..."
 
Vous avez des pistes à me suggérer ?
 
 :jap:


---------------
Mon topic de vente - Mon feed-back
mood
Publicité
Posté le 10-12-2009 à 10:27:19  profilanswer
 

n°1948945
pataluc
Posté le 10-12-2009 à 10:48:36  profilanswer
 

le pipe est clairement pas ce qu'il te faut.  
 
par contre tu peux faire un for:

Code :
  1. for u in `ls /home`; do /log_ssh -u $u; done


 
mais effectivement ca serait plus sexy en créant une option -a ou --all dans ton script et y faire le for.

n°1949034
tuxbleu
renie ses origines
Posté le 10-12-2009 à 14:22:33  profilanswer
 

hey merci :) , je teste ca dessuite
 
Tiens puisque tu parles de "--all", je cherchais justement à faire des options à plusieurs lettre, avec la méthode que j'utilise chaque lettre serait une option propre. J'imagine que c'est une question de syntaxe. Si quelqu'un peut me souffler la syntaxe correcte ?
 
Pour ma part je fais :  
 

#!/bin/bash
 
while getopts u:lesq option
do  
case...


Je voulais une option "?" mais ça ne fonctionne pas, et dans l'idée pour certaines options, j'aurais voulu mettre des mots , genre --user plutôt que -u, voir laisser les 2 possibilités.
Oui je sais, google est mon amis, mais si une âme généreuse se sent de me dire comment on fait [:ddr555]


---------------
Mon topic de vente - Mon feed-back
n°1949046
tuxbleu
renie ses origines
Posté le 10-12-2009 à 14:49:48  profilanswer
 

pataluc a écrit :

le pipe est clairement pas ce qu'il te faut.  
 
par contre tu peux faire un for:

Code :
  1. for u in `ls /home`; do /log_ssh -u $u; done


 
mais effectivement ca serait plus sexy en créant une option -a ou --all dans ton script et y faire le for.


Surement une question de syntaxe, mais lorsque je fais : for u in 'ls /home'; do echo $u ; done
Le résultat c'est "ls /home" et non pas le résultat de la commande en question  :sweat:  
 
Edit : résolu en faisant :

Code :
  1. case $option in
  2. a)
  3. cd /home
  4. for u in * ; do echo ${u} ; done
  5. cd /root

Message cité 1 fois
Message édité par tuxbleu le 10-12-2009 à 15:02:16

---------------
Mon topic de vente - Mon feed-back
n°1949084
pataluc
Posté le 10-12-2009 à 15:27:42  profilanswer
 

sinon, regarde du coté de getopt au lieu de getopts, je crois qu'il gère les options longues.

n°1949093
tuxbleu
renie ses origines
Posté le 10-12-2009 à 15:37:04  profilanswer
 

pataluc a écrit :

sinon, regarde du coté de getopt au lieu de getopts, je crois qu'il gère les options longues.


 :jap:  
 
Si ça intéresse quelqu'un un script qui filtre un peu les logs ssh par user ou provenance (lan / exterieur), je veux bien le poster, même si bon ca n'a rien d'extraordinaire.


---------------
Mon topic de vente - Mon feed-back
n°1949251
fhr
Posté le 10-12-2009 à 22:53:49  profilanswer
 

tuxbleu a écrit :


Surement une question de syntaxe, mais lorsque je fais : for u in 'ls /home'; do echo $u ; done
Le résultat c'est "ls /home" et non pas le résultat de la commande en question  :sweat:


 
Parce que c'est avec des ` et pas des ' je pense.
 

n°1949254
tuxbleu
renie ses origines
Posté le 10-12-2009 à 22:58:43  profilanswer
 

fhr a écrit :


 
Parce que c'est avec des ` et pas des ' je pense.
 


oh  :??: ah ben merde alors ! je vais essayer ça demain matin !


---------------
Mon topic de vente - Mon feed-back
n°1949330
Tuxerman12
Posté le 11-12-2009 à 10:02:27  profilanswer
 

Oui, les ' ' c'est pour fixer du texte, les ` ` c'est pour demander l'exécution d'une commande.

n°1949336
tuxbleu
renie ses origines
Posté le 11-12-2009 à 10:18:11  profilanswer
 

Tuxerman12 a écrit :

Oui, les ' ' c'est pour fixer du texte, les ` ` c'est pour demander l'exécution d'une commande.


 [:chronoklazm]  
En effet, ça marche bien mieux, j'avais trouvé un subterfuge, mais là c'est impeccable.


---------------
Mon topic de vente - Mon feed-back
mood
Publicité
Posté le 11-12-2009 à 10:18:11  profilanswer
 

n°1955546
art_dupond
je suis neuneu... oui oui !!
Posté le 06-01-2010 à 16:12:38  profilanswer
 

ou un truc du genre
 
ls /home/ | xargs -n1 ./log_ssh -u


---------------
oui oui
n°1955612
tuxbleu
renie ses origines
Posté le 06-01-2010 à 17:48:06  profilanswer
 

art_dupond a écrit :

ou un truc du genre
 
ls /home/ | xargs -n1 ./log_ssh -u


 
oh ?
intéressant à essayer  :jap:


---------------
Mon topic de vente - Mon feed-back

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [SHELL] Une histoire "pipe"

 

Sujets relatifs
utilisation de mysql dans un shell linuxComment créer un pipe IN & OUT en executant un binaire ?
shell simple pour changer de repertoireURGENT : problème shell windows boucle for
utilisation awk dans un script shellShell : Découper un fichier en plusieurs fichiers
Texte en couleur (console)Programmation script shell ksh unix
Prendre la valeur après un ping[C] [Linux - Debian] read/write named pipe
Plus de sujets relatifs à : [SHELL] Une histoire "pipe"


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