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