Script bash ajout utilisateur samba

Fermé
tourdball Messages postés 152 Date d'inscription jeudi 24 juin 2004 Statut Membre Dernière intervention 10 mars 2009 - 21 avril 2006 à 15:09
jivef Messages postés 927 Date d'inscription mercredi 11 août 2004 Statut Membre Dernière intervention 12 novembre 2020 - 25 févr. 2011 à 02:03
Bonjour à tous,
découvrant les joies de l'administration, je me dois aussi de découvrir les joies des automatisation si je ne veux pas devenir fou que que mes doigt restent collés aux clavier 24/24 sur... Je dois don apprendre à écrire des script bash.

Le premier que je souhaiterai faire est la création de la création d'un nouveqau utilisateur pour un partage samba avec security=user. Voici ma question :

Comment inclure dans mon script :
- ouvrir le fichier /etc/samba/smb.conf avec vi
- positionner le curseur à la fin du fichier
- aller à la ligne et insérer une ligne
- insérer les lignes suivantes : #ou $USR a été défini précédement

[doc_$USR]
path = /home/$USR/documenti_$USR
valid users = $USR
public = no
writable = yes
create mask = 0700
browseable = no

- enfin sauvegarder et quitter


Voilà, je connais bien évidement les commandes : vi, i pour insérer, :wq, etc... mais comment faire les inclure dans un script bash?

Merci d'avance pour votre aide;-)
A+

4 réponses

[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 1 096
21 avril 2006 à 18:37
Salut,

Tu peux faire comme çà :
cat << HERE >> /etc/samba/smb.conf 

[doc_$USR]
path = /home/$USR/documenti_$USR
valid users = $USR
public = no
writable = yes
create mask = 0700
browseable = no
HERE

On peut le faire avec vi aussi, mais bash tout seul et les redirections sont suffisantes.

Ce procédé "<< HERE" s'appelle un "Here Document". Il permet d'éviter d'avoir à créer un document séparé au script quand it s'agit d'en rediriger le contenu vers le stdin d'une commande. On peut utiliser un autre mot que HERE, bien sûr. Le document est en quelques sortes "simulé" à l'intérieur du script.

Ses différentes variantes sont décrites dans le ABS Guide :

http://www.aero.jussieu.fr/services/INFO/documentation/mendel/HTML/here-docs.html

Le ">>" sert à modifier le fichier texte en ajoutant le contenu redirigé à la fin du fichier texte (append).

Un simple ">" par contre écraserait le fichier texte avec le nouveau contenu.

Travaille sur une copie de ton smb.conf... un accident est vite arrivé :)


Dal
1
tourdball Messages postés 152 Date d'inscription jeudi 24 juin 2004 Statut Membre Dernière intervention 10 mars 2009 11
24 avril 2006 à 11:19
Salut Dal et merci pour ton aide, çà marche Nickel ;-)

Un peu plus compliqué maintenant...

Je suis en train de faire un petit script pour éliminer un user, et à un moment donné, je voudrai tester s'il existe une ligne [doc_$USR] dans /etc/samba/smb.conf et le cas échéant l'éliminer ainsi que les 6 lignes qui suivent... tu vois ce que je veux dire?

C'est possible?
A+ :-)
0
cat /etc/samba/smb.conf | grep '[doc_$USR]' | wc -l
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897 > anonymous
19 déc. 2008 à 16:47
Merci pour ce complément d'info deux ans et demi après, mais ça ne répond pas entièrement à la demande il me semble, non ? ;-)

grep -A6 aurait sans doute était préférable (sans le | wc -l)
0
Bobinours Messages postés 2898 Date d'inscription jeudi 26 avril 2001 Statut Membre Dernière intervention 21 mars 2013 504
9 févr. 2011 à 16:31
Salut jipicy,
Je vois que ce fil de discussion s'étale dans le temps alors j'en profite :)

La solution anonyme répond à la question de tourdball, en retournant 1 si la chaine est présente (vrai) et 0 sinon (faux). Il faut mettre tout ça dans un test conditionnel évidemment.
Reste à les supprimer...

grep -A6 ne servant qu'à afficher et non pas à déterminer la présence de la chaine.

-= Bobinours =-
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 419
9 févr. 2011 à 16:48
Salut Bobinours,

La solution anonyme répond à la question de tourdball,
Ben non, sa solution ne renvoie que le nombre d'occurrences correspondant à "[doc_$USR]".

grep -A6 ne servant qu'à afficher et non pas à déterminer la présence de la chaine.
Non plus ;-\ En fait "grep A6" renverrait non seulement la ligne recherchée (si elle était présente toutefois), mais aussi les six lignes suivantes ;-)


Le seul truc que je t'accorde c'est qu'effectivement, ni la réponse d'anonymous, ni celle de jipicy ne répondent vraiment à la question posée.

Une réponse possible aurait été du genre :

sed -i.bak "/\[doc_$USR\]/,+6d" /etc/samba/smb.conf

;-))
0
jivef Messages postés 927 Date d'inscription mercredi 11 août 2004 Statut Membre Dernière intervention 12 novembre 2020 306
13 nov. 2010 à 01:38
Bonjour,

En fait, ça fait même 4 ans...
Balaise !

Mais si on veut tout faire par script, gedit ne sert pas à grand chose, à part peut-être à créer des scripts...

Ceci étant dit, je vais paraphraser un vieux dicton "un bon scripteur doit savoir scripter sans gedit ..."

Jonas,
vim addict
0
baadr Messages postés 29 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 31 décembre 2012
13 oct. 2010 à 20:04
je vous conseil d'utiliser gedit à la place de vi c'est plus facile.
tu ouvre le terminale et tu tapes la commande suivante:

sudo gedit chemin/de/votre/fichier

après le fichier s'ouvre et vous pouvez faire ce que vous voulez ;)
-2
deux ans apres, tu es trop fort
0
jivef Messages postés 927 Date d'inscription mercredi 11 août 2004 Statut Membre Dernière intervention 12 novembre 2020 306
25 févr. 2011 à 02:03
Et puis il est important de pouvoir se débrouiller dans un terminal.

Comment fera-t-il le jour où il sera dans ssh sans export display...
S'il ne sait utiliser que gedit, kwrite ou autre joyeuseté, il te remerciera de ta remarque sur la facilité de tel éditeur et la complexité de tel autre...


Quand je lis ce type de remarque je suis encore plus définitivement "vim addict."
Note bien que "vim" est un peu plus évolué que "vi"
D'ailleurs, dans quelques cas, la commande vi est devenu un alias de vim.
0