pb de script linux - Codes et scripts - Linux et OS Alternatifs
Marsh Posté le 16-08-2011 à 13:22:22
| Citation : #!/bin/bash    | 
 
  
 
Marsh Posté le 16-08-2011 à 13:22:32
Les deux boucles sont imbriquées donc à chaque tour tu donnes à un user tous les home à tour de rôle.
Marsh Posté le 16-08-2011 à 13:26:47
la logique des 2 boucles for n'est pas bonne.
Je suppose que à un user donné du fichier users.txt correspond un homedir du fichier home.txt (le user de la 3ème ligne de users.txt a le homedir situé à la 3ème ligne du fichier home.txt), non ?
Là ce que tu fais c'est :
 1. Pour le user de la ligne 1, on va lui affecter le dossier de la ligne 1 fichier home.txt, puis on va lui affecter le dossier de la ligne 2, puis le dossier de la ligne 3, etc..;
 2. Pour le user de la ligne 2, on va lui affecter le dossier de la ligne 1 du fichier home.txt, puis on va lui affecter le dossier de la ligne 2, puis le dossier de la ligne 3, etc..;
 etc....
 etc...
pour le dernier user du fichier, on va lui affecter le home dir situé en ligne 1 du fichier home.txt, puis celui de la ligne 2.... etc...
Au final, le résultat est que le dernier user a tous les dossier.
Une boucle while serait plus appropriée avec deux read ou readline pour tes fichiers (tu sors de la boucle lorsque tu reçois eof)
Marsh Posté le 16-08-2011 à 13:56:05
pourquoi s'embêter avec 2 fichiers, si le nom du home correspond au nom du user?
Marsh Posté le 16-08-2011 à 14:05:00
" pourquoi s'embêter avec 2 fichiers, si le nom du home correspond au nom du user? " 
-> chaque users a des home différents avec des noms différents... 
 
"Je suppose que à un user donné du fichier users.txt correspond un homedir du fichier home.txt (le user de la 3ème ligne de users.txt a le homedir situé à la 3ème ligne du fichier home.txt), non ?" 
-> Oui exacte. mais je ne sais pas comment faire 
Marsh Posté le 16-08-2011 à 14:13:42
| dex51 a écrit : " pourquoi s'embêter avec 2 fichiers, si le nom du home correspond au nom du user? "  | 
 
sed ou awk sait compter les numéros de ligne, je crois bien.
Marsh Posté le 16-08-2011 à 14:30:46
salut, 
 
à titre d'exemple, en bash avec paste : 
| Code : 
 | 
| Code : 
 | 
Marsh Posté le 16-08-2011 à 15:04:34
j'approche presque : 
 
#!/bin/bash  
 
paste users home | ( 
while read col1 col2 ; do 
usermod -d ${col2} ${col1} 
chown -R ${col1} ${col2} 
 
done 
) 
 
mais il reconnait pas mes variables ${col1} et ${col2}
Marsh Posté le 16-08-2011 à 15:15:26
c'est bon ca marche 
merci a tous 
ce que j'ai fait :
===================
#!/bin/bash 
paste users home | (
while read col1 col2 ; do
usermod -d $col2 $col1
chown -R $col1 $col2
done
)
exit
Marsh Posté le 16-08-2011 à 15:32:38
Sinon, avec 1 fichier contenant tes users et home : 
 
Tout d'abord tu crées un fichiers avec un séparateur de type ":" 
Par exemple : 
| toto:/home/toto | 
 
| Citation : #! /bin/bash    | 
Marsh Posté le 16-08-2011 à 12:54:41
bonjour,
Je fais appel a vous car j'ai un pb sur un script tout con je suis sur (mais je débute lol)
mon problème, j'ai 2 fichiers contenant des variables, un fichier pour les users, un fichier pour le home directory. Sachant que j'ai +120 users.. je me vois mal recréer les permissions a la mains ainsi que les homes...
voici mon script qui marche pas... il ne regarde pas les users ligne par ligne mais prends le dernier directement...
=====================
#!/bin/bash
for i in `cat users.txt`
do
for y in `cat home.txt`
do
usermod -d $y $i
chown -R $i $y
done
done
exit
=====================
Merci pour votre aide car je ne trouve pas la solution