Script bash ajout utilisateur samba

tourdball Messages postés 152 Date d'inscription   Statut Membre Dernière intervention   -  
jivef Messages postés 927 Date d'inscription   Statut Membre Dernière intervention   -
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+
A voir également:

4 réponses

[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
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   Statut Membre Dernière intervention   11
 
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
anonymous
 
cat /etc/samba/smb.conf | grep '[doc_$USR]' | wc -l
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896 > anonymous
 
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   Statut Membre Dernière intervention   504
 
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   Statut Contributeur Dernière intervention   6 431
 
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   Statut Membre Dernière intervention   306
 
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   Statut Membre Dernière intervention  
 
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
[dal]
 
deux ans apres, tu es trop fort
0
jivef Messages postés 927 Date d'inscription   Statut Membre Dernière intervention   306
 
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