Script bash supprimer des lignes d'un fichier de configuration
Résolu
xunil2003
Messages postés
765
Date d'inscription
Statut
Membre
Dernière intervention
-
xunil2003 Messages postés 765 Date d'inscription Statut Membre Dernière intervention -
xunil2003 Messages postés 765 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai créé un script bash pour configurer le fichier de configuration Samba afin d'ajouter un partage sur chacun de mes postes Linux.
Maintenant je voudrais supprimer le partage directement dans le fichier configuration de Samba /etc/samba/smb.conf ce qui suit :
J'ai essayé de supprimer la ligne :
comme ceci :
mais ça marche pas.
Comment puis-je faire ?
Merci.
J'ai créé un script bash pour configurer le fichier de configuration Samba afin d'ajouter un partage sur chacun de mes postes Linux.
echo "" | sudo tee -a $nom_fichier_configuration_samba
echo "" | sudo tee -a $nom_fichier_configuration_samba
echo "[tmp]" | sudo tee -a $nom_fichier_configuration_samba
echo "# Partage classique temporaire du dossier /tmp avec lecture/ecriture sans mot de passe et s'efface automatiquement à l'arrêt du PC" | sudo tee -a $nom_fichier_configuration_samba
echo "comment = Partage temporaire s'efface a l'arrêt du pc" | sudo tee -a $nom_fichier_configuration_samba
echo "path = /tmp/partage_temporaire" | sudo tee -a $nom_fichier_configuration_samba
echo "read only = no" | sudo tee -a $nom_fichier_configuration_samba
echo "public = yes" | sudo tee -a $nom_fichier_configuration_samba
Maintenant je voudrais supprimer le partage directement dans le fichier configuration de Samba /etc/samba/smb.conf ce qui suit :
[tmp]
# Partage classique temporaire avec lecture / ecriture sans mot de passe
comment = Partage temporaire s'efface a l'arrêt du pc
path = /tmp/partage_temporaire
read only = no
public = yes
J'ai essayé de supprimer la ligne :
[tmp]
comme ceci :
sudo sed '/[tmp]/d' /etc/samba/smb.conf
mais ça marche pas.
Comment puis-je faire ?
Merci.
A voir également:
- Script bash supprimer des lignes d'un fichier de configuration
- Ethernet n'a pas de configuration ip valide - Guide
- Supprimer rond bleu whatsapp - Guide
- Fichier bin - Guide
- Impossible de supprimer un fichier - Guide
- Comment réduire la taille d'un fichier - Guide
7 réponses
Salut,
Si tu connais exactement le nombre de ligne qui suivent '[tmp]' :
Si tu ne les connais pas et qu'il y a une ligne vide entre chaque section de tes partages :
Si tu connais exactement le nombre de ligne qui suivent '[tmp]' :
sed '/\[tmp\]/,+5d' smb.conf
Si tu ne les connais pas et qu'il y a une ligne vide entre chaque section de tes partages :
sed '/\[tmp\]/,/^$/d' smb.conf
Bonsoir Zipe31,
Etes-vous sûre et certain.
j'ai fait ceci :
Et il y a toujours la section "tmp" dans le fichier ?
Merci.
Etes-vous sûre et certain.
j'ai fait ceci :
sudo sed '/\[tmp\]/,/^$/d' /etc/samba/smb.conf
Et il y a toujours la section "tmp" dans le fichier ?
Merci.
Oui j'en suis sûr, par contre comme toujours avec sed, je ne donne jamais le code modifiant le fichier directement ;-\
Après avoir testé la syntaxe ET constaté de visu (dans le terminal) qu'elle fonctionne bien, il faut rajouter le paramètre "-i" à la commande :
Le .BAK n'est là que pour créer une copie de sauvegarde et n'est pas obligatoire. S'il est omis, penser à faire une copie du fichier à modifier.
Après avoir testé la syntaxe ET constaté de visu (dans le terminal) qu'elle fonctionne bien, il faut rajouter le paramètre "-i" à la commande :
sudo sed -i.BAK '/\[tmp\]/,/^$/d' /etc/samba/smb.conf
Le .BAK n'est là que pour créer une copie de sauvegarde et n'est pas obligatoire. S'il est omis, penser à faire une copie du fichier à modifier.
Bonjour,
J'ai eu un problème avec un fichier dans "/etc/init.d/", j'ai du tout changer pour pouvoir activer ou désactiver le fichier au démarrage du pc.
Dans le fichier /etc/rc.local j'ai ceci
il faut que soit j'ajoute ou supprime la ligne "/etc/init.d/creer-un-dossier-temporaire-dans-tmp.sh" avant la ligne "exit 0".
Mes deux questions :
1/ Comment ajouter ceci "/etc/init.d/creer-un-dossier-temporaire-dans-tmp.sh" avant "exit 0" ?
2/ Comment supprimer ceci "/etc/init.d/creer-un-dossier-temporaire-dans-tmp.sh" avant "exit 0".
Le "exit 0" doit toujours rester à la fin du fichier.
Merci.
J'ai eu un problème avec un fichier dans "/etc/init.d/", j'ai du tout changer pour pouvoir activer ou désactiver le fichier au démarrage du pc.
Dans le fichier /etc/rc.local j'ai ceci
laurent@Laurent-Bureau:~$ cat /etc/rc.local
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
exit 0
il faut que soit j'ajoute ou supprime la ligne "/etc/init.d/creer-un-dossier-temporaire-dans-tmp.sh" avant la ligne "exit 0".
Mes deux questions :
1/ Comment ajouter ceci "/etc/init.d/creer-un-dossier-temporaire-dans-tmp.sh" avant "exit 0" ?
2/ Comment supprimer ceci "/etc/init.d/creer-un-dossier-temporaire-dans-tmp.sh" avant "exit 0".
Le "exit 0" doit toujours rester à la fin du fichier.
Merci.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
Quand je veux supprimer la ligne
"/etc/init.d/creer-un-dossier-temporaire-dans-tmp.sh" dans le fichier "/etc/rc.local", je fais :
Et quand je vérifie le contenu du fichier, il y a toujours la ligne "/etc/init.d/creer-un-dossier-temporaire-dans-tmp.sh" ?
Merci.
Quand je veux supprimer la ligne
"/etc/init.d/creer-un-dossier-temporaire-dans-tmp.sh" dans le fichier "/etc/rc.local", je fais :
laurent@Laurent-Bureau:~$ echo "suppression" ; sudo sed '/etc/init.d/creer-un-dossier-temporaire-dans-tmp.sh/d' /etc/rc.local
suppression
[sudo] password for laurent:
no talloc stackframe at ../source3/param/loadparm.c:4864, leaking memory
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
nit.d/creer-un-dossier-temporaire-dans-tmp.sh/d
/etc/init.d/creer-un-dossier-temporaire-dans-tmp.sh
exit 0
laurent@Laurent-Bureau:~$
Et quand je vérifie le contenu du fichier, il y a toujours la ligne "/etc/init.d/creer-un-dossier-temporaire-dans-tmp.sh" ?
laurent@Laurent-Bureau:~$ echo "Lecture contenu fichier" ; cat /etc/rc.local
Lecture contenu fichier
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
/etc/init.d/creer-un-dossier-temporaire-dans-tmp.sh
exit 0
laurent@Laurent-Bureau:~$
Merci.
Re,*
J'ai du mal à utiliser sed et je le trouve compliqué.
J'ai déjà sauvegardé le fichier avant toute modification.
quand je fait ceci :
Contenu du fichier :
Merci.
J'ai du mal à utiliser sed et je le trouve compliqué.
J'ai déjà sauvegardé le fichier avant toute modification.
quand je fait ceci :
laurent@Laurent-Bureau:~$ sudo sed '/\/etc/init.d/creer-un-dossier-temporaire-dans-tmp.s\h/,/^$/d' /etc/rc.local
[sudo] password for laurent:
no talloc stackframe at ../source3/param/loadparm.c:4864, leaking memory
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
nit.d/creer-un-dossier-temporaire-dans-tmp.sh/,/^$/d
/etc/init.d/creer-un-dossier-temporaire-dans-tmp.sh
exit 0
laurent@Laurent-Bureau:~$
Contenu du fichier :
laurent@Laurent-Bureau:~$ cat /etc/rc.local
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
/etc/init.d/creer-un-dossier-temporaire-dans-tmp.sh
exit 0
laurent@Laurent-Bureau:~$
Merci.
Salut,
Cette syntaxe n'est bonne que pour les motifs, pour la commande de substitution on définit le caractère délimiteur directement, sans devoir le protéger.
Voir la FAQ sur sed
il faut protéger tous les /Ou dire à sed que le délimiteur a changé (seul le 1er doit être protégé) :
sed '\#/etc/init.d/creer-un-dossier-temporaire-dans-tmp.sh#d' fichier
Cette syntaxe n'est bonne que pour les motifs, pour la commande de substitution on définit le caractère délimiteur directement, sans devoir le protéger.
sed 's#bla#plop#' fichier
Voir la FAQ sur sed
Re,
Ok jy suit arrivé.
Pour insérer :
Pour supprimer :
Il faut mettre à chaque fois "Sed -i. NOUV" avant, c'est ce que je n'avais pas compris
Merci.
Ok jy suit arrivé.
Pour insérer :
sudo sed -i.NOUV '$i/etc/init.d/creer-un-dossier-temporaire-dans-tmp.sh' /etc/rc.local
Pour supprimer :
sudo sed -i.NOUV '/\/etc\/init.d\/creer-un-dossier-temporaire-dans-tmp.sh/d' /etc/rc.local
Il faut mettre à chaque fois "Sed -i. NOUV" avant, c'est ce que je n'avais pas compris
Merci.