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

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  recuperer valeurs dans un fichier texte

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

recuperer valeurs dans un fichier texte

n°390008
davyd
alea jacta est ...
Posté le 15-01-2004 à 11:05:59  profilanswer
 

salut !!
 
je sais que y a surement la reponse sur le net  
mais mes recherches ayant été infructueuse jusque la  
je me permet de vous demander:
 
est-ce que qqn sait comment recuperer les valeurs dans un fichier teste de la maniere suivante :
 
mon fichier texte se presente comme ca :
 
login1 passwd1
login2 passwd2
 
ce que je voudrais c recuperer les deux valeurs de la premiere ligne et ensuite recuperer les 2 valeurs de la ligne suivante ...
 
parce qu'en fait je voudrais faire une tache cron qui scanne ce fichier ttes les 10 minutes et qui ajoute les utilisateurs qui sont présents dans ce fichier.
Ensuite j'effacerai ce fichier pr eviter qu'il essaie de rentrer 10 fois les memes utilisateurs.
 
Voila merci de votre aide.
 
 [:alex_]


Message édité par davyd le 15-01-2004 à 11:06:47

---------------
"c'est quand on est au pied du mur...qu'on voit le mieux le mur"
mood
Publicité
Posté le 15-01-2004 à 11:05:59  profilanswer
 

n°390010
Profil sup​primé
Posté le 15-01-2004 à 11:09:03  answer
 

ca doit se jouer avec des cut mais je connais plus la syntaxe exacte (et le code pr le caractère retour à la ligne...)

n°390013
arghbis
salops de dauphins
Posté le 15-01-2004 à 11:18:04  profilanswer
 

tu peux te faire un tit script perl/python/bash/autre qui gérera ça intelligemment

n°390015
davyd
alea jacta est ...
Posté le 15-01-2004 à 11:20:30  profilanswer
 

oui j'ai l'intention de le faire en bash  
mais le pb c'est que je sais pas comment faire ...


---------------
"c'est quand on est au pied du mur...qu'on voit le mieux le mur"
n°390017
bobuse
Posté le 15-01-2004 à 11:23:50  profilanswer
 

man gawk :)
 
ou sinon en bash :


for ligne in $(cat ton_fichier); do
  login=`echo ${ligne} | cut -d " " -f 1`
  passwd=`echo ${ligne} | cut -d " " -f 2`
  ma_commande mon_argument ${login} autres_arguments ${passwd}
done


à l'arrache ;)


Message édité par bobuse le 15-01-2004 à 12:09:13
n°390020
davyd
alea jacta est ...
Posté le 15-01-2004 à 11:26:07  profilanswer
 

bon j'essaie tt de suite ...
merci de ton aide en tt cas  
je te dis tt a l'heure si ca a marche


---------------
"c'est quand on est au pied du mur...qu'on voit le mieux le mur"
n°390034
davyd
alea jacta est ...
Posté le 15-01-2004 à 11:42:30  profilanswer
 

bon je viens d'essayé mais le pb  
c qu'il me prend mon fichier en tant que login et passwd ...
et non la 1re ligne, la 2eme ...
en fait je comprends pas ta premiere ligne :
"for ligne in ${ton_fichier};"
 
comment il sait que c les lignes en faisant ca ???


---------------
"c'est quand on est au pied du mur...qu'on voit le mieux le mur"
n°390043
davyd
alea jacta est ...
Posté le 15-01-2004 à 11:53:35  profilanswer
 

y a encore un petit pb  
il me prend cat comme nom d'utilisateur (login) ...
pourtant qd je fais un cat a la main sur ce fichier ca marche bien ...
comprend pas
 


---------------
"c'est quand on est au pied du mur...qu'on voit le mieux le mur"
n°390045
Mjules
Modérateur
Parle dans le vide
Posté le 15-01-2004 à 11:55:51  profilanswer
 

davyd a écrit :

bon je viens d'essayé mais le pb  
c qu'il me prend mon fichier en tant que login et passwd ...
et non la 1re ligne, la 2eme ...
en fait je comprends pas ta premiere ligne :
"for ligne in ${ton_fichier};"
 
comment il sait que c les lignes en faisant ca ???


c'est le principe de la boucle for  [:spamafote]  
 
n'oublie pas le cat dans ta commande :
for ligne in `cat mon_fichier`;
 
perso, je préfère utiliser les ` (ALTGR + 7) que ${}


Message édité par Mjules le 15-01-2004 à 11:56:36

---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
n°390047
davyd
alea jacta est ...
Posté le 15-01-2004 à 11:57:00  profilanswer
 

ca y est j'ai trouvé
en fait la premiere ligne doit ressemble a ca :
 
for ligne in `cat ton_fichier`; do  
 
j'ai juste remplacer le $[cat mon fichier] par `cat mon fichier`
 
Merci bcp de votre aide en tt cas.
Vous me sauvez la vie !!
 
a +


---------------
"c'est quand on est au pied du mur...qu'on voit le mieux le mur"
mood
Publicité
Posté le 15-01-2004 à 11:57:00  profilanswer
 

n°390049
davyd
alea jacta est ...
Posté le 15-01-2004 à 11:57:31  profilanswer
 

a ben on a repondu en meme tps ...
 
:-)


---------------
"c'est quand on est au pied du mur...qu'on voit le mieux le mur"
n°390050
Mjules
Modérateur
Parle dans le vide
Posté le 15-01-2004 à 11:58:41  profilanswer
 

regarde dans le topic de liens ; ya des sites qui décrivent comment faire des scripts.


---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
n°390055
davyd
alea jacta est ...
Posté le 15-01-2004 à 12:00:00  profilanswer
 

ouai je vais regarder mais maintenant ca marche !!!!
 
je decouvre petit a petit les scripts bash ...
c puissant ca ma plait bien en fait
 
allez a + tt le monde et merci de votre aide
 


---------------
"c'est quand on est au pied du mur...qu'on voit le mieux le mur"
n°390062
davyd
alea jacta est ...
Posté le 15-01-2004 à 12:08:17  profilanswer
 

une derniere petite question :
 
comment je peux faire pr mettre au debut du script  
de regarder si le fichier qu'il doit traiter existe ou pas
et que selon il fasse le traitement ?


---------------
"c'est quand on est au pied du mur...qu'on voit le mieux le mur"
n°390063
minusplus
Posté le 15-01-2004 à 12:09:50  profilanswer
 

if test -e fichier; then truc; fi

n°390066
Profil sup​primé
Posté le 15-01-2004 à 12:11:35  answer
 

davyd a écrit :

une derniere petite question :
 
comment je peux faire pr mettre au debut du script  
de regarder si le fichier qu'il doit traiter existe ou pas
et que selon il fasse le traitement ?


 
if [ -e "$FILE" ]; then
  echo "existe"
else
  echo "n' existe pas"
  exit 1
fi

n°390067
davyd
alea jacta est ...
Posté le 15-01-2004 à 12:14:23  profilanswer
 

merci


---------------
"c'est quand on est au pied du mur...qu'on voit le mieux le mur"
n°390102
bobuse
Posté le 15-01-2004 à 13:32:01  profilanswer
 

Mjules a écrit :


perso, je préfère utiliser les ` (ALTGR + 7) que ${}


 
:??: quel rapport ?
 
les ` servent à "forcer" une évaluation d'une commande, tandis que ${} sert juste à accéder au contenu d'une variable !
 
Peut-être que tu confonds avec $() ... :)

n°390104
davyd
alea jacta est ...
Posté le 15-01-2004 à 13:39:08  profilanswer
 

ca a pas l'air de marcher le "if [ -e "$FILE" ]; then "  
il le reconnait pas ...
-e ca veut dire est-ce que ca existe ??


---------------
"c'est quand on est au pied du mur...qu'on voit le mieux le mur"
n°390105
bobuse
Posté le 15-01-2004 à 13:42:38  profilanswer
 

man bash
 
puis recherche la chaine "-e"
pour rechercher, tapes [/]
puis ton texte à chercher, et [Entrée]
et ensuite [n] pour aller à l'occurence suivante ;)
 
sinon si t'es sous KDE, [Alt]+[F2], tapes "man:bash" dans la boite qui est apparue, et entrée, et hop ! T'as le man dans konqueror ;)

n°390110
minusplus
Posté le 15-01-2004 à 13:55:14  profilanswer
 

Mjules a écrit :


 
perso, je préfère utiliser les ` (ALTGR + 7) que $()


pas moi : `` ne s'imbrique pas... :/

n°390124
davyd
alea jacta est ...
Posté le 15-01-2004 à 14:20:01  profilanswer
 

alors la je comprends plus rien ....
tt a l'heure ca marchait mais maintenant il me prend un par un tt les argumetns de la ligne
 
genre il me met le login et le password identitique  
et apres il essaie de me rajouter l'utilisateur 'passwd' ...
 
exemple :
je veux ajouter "login" avec le mot de passe "passwd"
 
et ben il me cree l'utilisateur login avec comme mot de passe login aussi  
et ensuite il me cree passwd avec comme mot de passe passwd ...
 
comprends plus rien la ...


---------------
"c'est quand on est au pied du mur...qu'on voit le mieux le mur"
n°390138
bobuse
Posté le 15-01-2004 à 14:50:35  profilanswer
 

ouaip exact !
 
voilà donc une autre solution en awk à l'arrache :


gawk  '{system("ma_commande mon_argument "$1" autres_arguments "$2)}' ton_fichier

n°390139
bobuse
Posté le 15-01-2004 à 14:51:04  profilanswer
 

en fait, donne plus exactement la commande à exécuter, ce sera plus facile ...

n°390144
davyd
alea jacta est ...
Posté le 15-01-2004 à 14:55:49  profilanswer
 

en fait ce que je veux faire c faire un useradd avec les parametre du fichier texte de la maniere suivante :
 
le fichier texte est comme ca :
 
login1 motdepasse1
login2 motdepasse2
...
 
et moi je veux ajouter tous ces utilisateurs  
 
le pb c qu'il me prend les donnees une par une  
au lieu de faire  
useradd login1 -p motdepasse1
et d'aller a la ligne pr la suite
 
il me fait
useradd login1 -p login1
useradd motdepasse1 -p motdepasse1
 
je comprends pas comment ca se fait ...


---------------
"c'est quand on est au pied du mur...qu'on voit le mieux le mur"
n°390146
bobuse
Posté le 15-01-2004 à 15:11:55  profilanswer
 

Je reprends ma ligne ....


gawk  '{system("useradd "$1" -p "$2)}' ton_fichier

n°390147
bobuse
Posté le 15-01-2004 à 15:14:03  profilanswer
 

davyd a écrit :


je comprends pas comment ca se fait ...


 
en fait c'est normal ! La boucle ne boucle pas sur chaque ligne mais sur chaque mot, donc du coup, ça marche pas ! Pour plus de détail voir man bash à la section "Commandes composees" ...
Y a un moyen de contourner ce problème, mais bon, ça se fait aussi bien en awk :D

n°390148
davyd
alea jacta est ...
Posté le 15-01-2004 à 15:15:24  profilanswer
 

tu saurais pas comment contourner ce pb parce que j'aimerai pas etre oblige d'utiliser awk ... (desole)
 
avec les cut y a pas moyen?


---------------
"c'est quand on est au pied du mur...qu'on voit le mieux le mur"
n°390162
Profil sup​primé
Posté le 15-01-2004 à 15:40:58  answer
 

c facile tu utilise pas le caractère espace comme délimiteur mais un car spécial et tu cut sur celui ci :o


Message édité par Profil supprimé le 15-01-2004 à 15:41:09
n°390165
davyd
alea jacta est ...
Posté le 15-01-2004 à 15:50:08  profilanswer
 

ouai ca marche cool ...
 
et sinon vous savez comment faire pr que la commande "useradd"  
accepte les utilisateurs avec un "_" ?


---------------
"c'est quand on est au pied du mur...qu'on voit le mieux le mur"
n°390168
Profil sup​primé
Posté le 15-01-2004 à 16:01:09  answer
 

:eek: 227 vues

n°390170
davyd
alea jacta est ...
Posté le 15-01-2004 à 16:03:09  profilanswer
 

bon ca a l'air de marcher  
sauf que de tps en tps le script que j'ai fait (pr ajouter les utilisateurs qui sont dans mon fichier texte) merde ...
ca marche pas  
si je le relance ca marche ...
quel est ce mystere ...???


---------------
"c'est quand on est au pied du mur...qu'on voit le mieux le mur"
n°390263
bobuse
Posté le 15-01-2004 à 18:01:36  profilanswer
 

pour déboguer, ajoute "set-x" au début de ton script ;)

n°390471
davyd
alea jacta est ...
Posté le 16-01-2004 à 09:29:13  profilanswer
 

ca marche pas set-x ...
et puis c bizarre parce que mon script il marche une fois sur 3 a peu pres ...
je vois pas bien la raison qui peut faire qu'il plante de tps en tps...
 
mon script pr ajouter un utilisateur et changer son mot de passe c ca :
 
#!/usr/bin/expect
set user [lindex $argv 0]
set motpasse [lindex $argv 1]
spawn addgroup $user
spawn useradd $user -p $motpasse -g $user -d /var/users/$user
spawn passwd $user
expect "Enter new UNIX password:"
send "$motpasse\n"
expect "Retype new UNIX password:"
send "$motpasse\n"
expect "passwd: password update successfully"  
 
et qd je lance :
./script.sh [login] [mot_de_passe]
 
il me met cette erreur :
 
spawn passwd [login]
passwd:unknown user [login]
send: spawn id exp6 not open
      while executing
"send "$motpasse\n"
 
 
si qqn comprend ...
merci


---------------
"c'est quand on est au pied du mur...qu'on voit le mieux le mur"
n°390550
bobuse
Posté le 16-01-2004 à 11:58:59  profilanswer
 

pardon c'est "set -x" ! (avec un espace)

n°390551
bobuse
Posté le 16-01-2004 à 11:59:50  profilanswer
 

c'est quoi "#!/usr/bin/expect" :??:

n°390554
davyd
alea jacta est ...
Posté le 16-01-2004 à 12:15:07  profilanswer
 

en fait expect c un programme qui me dit genre :
la je sais que va y avoir ca d'affiché  
donc a ce moment la faire ca .
 
expected (en anglais) -> attendu
 
donc c un programme qui simule ce que le shell devrait afficher
 
enfin c ce que j'ai compris.
Je suis pas specialiste non plus... :P


---------------
"c'est quand on est au pied du mur...qu'on voit le mieux le mur"
n°392903
aigles
Posté le 20-01-2004 à 16:58:47  profilanswer
 

Au lieu d'utiliser une boucle 'for in' avec des 'cut', on peut faire :
 

Code :
  1. [ -e fichier ] || exit 1
  2. while read login password
  3. do
  4.    adduser $login -p $password
  5. done < fichier


 
Je dois avouer que je ne l'ai pas testé avec bash (ça fonctionne avec ksh).

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  recuperer valeurs dans un fichier texte

 

Sujets relatifs
Ouverture de fichier..Limite du nombre de fichier ouvert
impossible d'écrire dans le fichier modules.conf ds mandrake9[shell] récupérer le contenu de la wildcard sans faire de boucle?
Décompresser un fichier avec password[newbie] comment lancer un fichier sh ou perl depuis Konqueror ?
Boot et Lilo sans menu graphique ni texte (a l'ancienne)Fichier Word -----> Possible de les passer sur un logitielle linux
Créer des utilisateurs linux depuis un fichier shell[shell] filter un fichier de log en fonction du reférant...
Plus de sujets relatifs à : recuperer valeurs dans un fichier texte


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