web-dev-qa-db-fra.com

Commenter, annuler le commentaire, modifier les paramètres en fonction de la chaîne, ajouter une ligne à partir du terminal

Je dois modifier certains fichiers pour supprimer une ligne de commentaire, modifier une valeur sur cette ligne ou supprimer une ligne de commentaire. J'essaie de faire cela à travers un script bash.

J'essaie d'éditer /etc/ssh/sshd_config et de changer

IgnoreRhosts yes
#RhostsRSAAuthentication no

à

IgnoreRhosts no
RhostsRSAAuthentication no

et changer

#PermitRootLogin yes

à

PermitRootLogin no
AllowUsers mroberts

et aussi pour éditer le fichier /etc/pam.d/system-auth afin de passer de

password sufficient pam_unix.so try_first_pass use_authtok nullok md5

à

password sufficient pam_unix.so try_first_pass use_authtok nullok md5 shadow

J'ai aussi besoin d'ajouter cette ligne au fichier /etc/pam.d/system-auth:

/etc/pam.d/system-auth file password required pam_unix.so remember=10

J'ai fait tout cela manuellement en utilisant vi et je peux apporter les modifications via cet éditeur. Cependant, je dois effectuer cette procédure sur de nombreux hôtes et je ne peux pas répéter le processus hôte par hôte. J'ai commis une erreur lors de laquelle j'ai oublié d'ajouter AllowUsers mroberts et je suis resté en dehors de l'hôte pendant près de 36 heures.

Je ne suis pas sûr de savoir comment rechercher une ligne et en modifier une partie, mais pas la ligne entière.

Existe-t-il un moyen de faire de tels changements depuis le terminal ou via un script bash?

5
edesz

Faire de nombreux changements en même temps

  1. Prenez le fichier d'origine et enregistrez-le sous le nom sshd_config.orig.

  2. Éditez sshd_config comme bon vous semble.

  3. Courir

    diff sshd_config.orig sshd_config >config.patch
    

    Conservez le fichier config.patch dans un endroit sûr.

Maintenant, chaque fois que vous avez une nouvelle version non modifiée de sshd_config et que vous souhaitez appliquer les mêmes modifications, exécutez:

patch sshd_config /path/to/config.patch

Cela appliquera les mêmes modifications au nouveau fichier ou vous avertira en cas d'incohérence qu'il ne peut pas résoudre sans votre aide.

Faire des changements individuels

Unix dispose également de puissants outils de ligne de commande, sans éditeur, pour modifier les fichiers.

En utilisant sed, par exemple:

sed -i.bak 's/IgnoreRhosts yes/IgnoreRhosts no/' sshd_config

Ou, effectuer le même changement avec GNU awk:

gawk -i inplace '$1=="IgnoreRhosts" {$2="no"} 1' sshd_config

L'approche patch permet d'apporter de nombreuses modifications en même temps. Pour un nombre inférieur de modifications, sed et awk Excel. Pour en savoir plus sur sed, voir, par exemple, ce tutoriel . Pour en savoir plus sur awk, voir, par exemple, ce tutoriel .

5
John1024