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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

pb de script linux

n°1287757
dex51
Posté le 16-08-2011 à 12:54:41  profilanswer
 

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

mood
Publicité
Posté le 16-08-2011 à 12:54:41  profilanswer
 

n°1287766
bardiel
Debian powa !
Posté le 16-08-2011 à 13:22:22  profilanswer
 

Citation :

#!/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


 :??:


---------------
Grippe ? Coronavirus ? Portez votre masque correctement ! :D
n°1287767
Tangrim
Des bisous et des nounours !
Posté le 16-08-2011 à 13:22:32  profilanswer
 

Les deux boucles sont imbriquées donc à chaque tour tu donnes à un user tous les home à tour de rôle.


Message édité par Tangrim le 16-08-2011 à 13:22:56

---------------
Des Bisous et des nounours ! | Internet 2025 | Dungeon-Generator
n°1287773
o'gure
Modérateur
Multi grognon de B_L
Posté le 16-08-2011 à 13:26:47  profilanswer
 

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)


Message édité par o'gure le 16-08-2011 à 13:31:37
n°1287784
agentsteel
Posté le 16-08-2011 à 13:56:05  profilanswer
 

pourquoi s'embêter avec 2 fichiers, si le nom du home correspond au nom du user?


---------------
http://agentoss.wordpress.com/
n°1287786
dex51
Posté le 16-08-2011 à 14:05:00  profilanswer
 

" 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 :/

Message cité 1 fois
Message édité par dex51 le 16-08-2011 à 14:05:16
n°1287788
Fork Bomb
Obsédé textuel
Posté le 16-08-2011 à 14:13:42  profilanswer
 

dex51 a écrit :

" 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 :/


sed ou awk sait compter les numéros de ligne, je crois bien.


---------------
Décentralisons Internet-Bépo-Troll Bingo - "Pour adoucir le mélange, pressez trois quartiers d’orange !"
n°1287792
Profil sup​primé
Posté le 16-08-2011 à 14:30:46  answer
 

salut,
 
à titre d'exemple, en bash avec paste :

Code :
  1. cat<<EOF>ace
  2. a
  3. c
  4. e
  5. EOF
  6. cat<<EOF>bdf
  7. b
  8. d
  9. f
  10. EOF
  11. while read chp1 chp2
  12. do echo "ligne_$((++n)): chp1 = $chp1, chp2 = $chp2"
  13. done < <(paste ace bdf)
Code :
  1. ligne_1: chp1 = a, chp2 = b
  2. ligne_2: chp1 = c, chp2 = d
  3. ligne_3: chp1 = e, chp2 = f

n°1287794
dex51
Posté le 16-08-2011 à 14:55:35  profilanswer
 

j'y arrive pas; suis trop nul lol :(
 

n°1287797
dex51
Posté le 16-08-2011 à 15:04:34  profilanswer
 

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}

mood
Publicité
Posté le 16-08-2011 à 15:04:34  profilanswer
 

n°1287799
dex51
Posté le 16-08-2011 à 15:15:26  profilanswer
 

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


Message édité par dex51 le 16-08-2011 à 15:17:30
n°1287801
bardiel
Debian powa !
Posté le 16-08-2011 à 15:32:38  profilanswer
 

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  
 
while IFS=: read user home  
do  
usermod -d $home $user
chown -R $user $home
done < mon_fichier


---------------
Grippe ? Coronavirus ? Portez votre masque correctement ! :D
n°1287988
dex51
Posté le 18-08-2011 à 17:24:49  profilanswer
 

Merci bardiel :)
 
je note je note


Aller à :
Ajouter une réponse
 

Sujets relatifs
Syntaxe lancement script dans terminal Linux[ Linux ][ Script ][ Démarrage ] : Who, Wget résultats vides? PQ?
Script sous linuxScript d'arrêt sous Linux
Problème script Linuxioview et netview pour mesurer les débits DD et net sous Linux (v1.04)
Linux et script shellScript linux pour relancer service
script d'affichage mp3 linux 
Plus de sujets relatifs à : pb de script linux


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