GNU/Linux >> Tutoriels Linux >  >> Linux

Ajouter une ligne au fichier /etc/hosts avec le script shell

Si vous êtes sur mac ou si vous avez besoin d'une autorisation sudo pour cela, essayez ceci :

sudo -- sh -c -e "echo '192.34.0.03   subdomain.domain.com' >> /etc/hosts";

Il vous demandera toujours un mot de passe.

manière alternative de @kainjow

echo '192.34.0.03 subdomain.domain.com' | sudo tee -a /etc/hosts

Assurez-vous d'utiliser le -i possibilité de sed .

-i[SUFFIX], --in-place[=SUFFIX]
  edit files in place (makes backup if extension supplied)

sed -i "2i192.241.xx.xx  venus.example.com venus" /etc/hosts

Sinon,

echo "192.241.xx.xx  venus.example.com venus" >> /etc/hosts

ajouterait la ligne à la fin du fichier, ce qui pourrait fonctionner comme prévu.


Insérer/Mettre à jour une entrée

Si vous souhaitez insérer/mettre à jour par programme une entrée d'hôtes à l'aide de bash, voici un script que j'ai écrit pour le faire :

#!/bin/bash

# insert/update hosts entry
ip_address="192.168.x.x"
host_name="my.hostname.example.com"
# find existing instances in the host file and save the line numbers
matches_in_hosts="$(grep -n $host_name /etc/hosts | cut -f1 -d:)"
host_entry="${ip_address} ${host_name}"

echo "Please enter your password if requested."

if [ ! -z "$matches_in_hosts" ]
then
    echo "Updating existing hosts entry."
    # iterate over the line numbers on which matches were found
    while read -r line_number; do
        # replace the text of each line with the desired host entry
        sudo sed -i '' "${line_number}s/.*/${host_entry} /" /etc/hosts
    done <<< "$matches_in_hosts"
else
    echo "Adding new hosts entry."
    echo "$host_entry" | sudo tee -a /etc/hosts > /dev/null
fi

Le script est destiné à être utilisé avec OS X mais fonctionnerait également sur Linux avec quelques ajustements mineurs.


Linux
  1. Créer un fichier Hosts spécifique à l'utilisateur pour compléter /etc/hosts ?

  2. Script Shell avec fonction et paramètre comme variables ?

  3. CentOS / RHEL :Comment récupérer à partir d'un fichier /etc/passwd supprimé

  4. Comprendre le fichier /etc/hosts sous Linux

  5. script bash ajoute du texte à la première ligne d'un fichier

echo ou print /dev/stdin /dev/stdout /dev/stderr

Trier avec séparateur de champs

Dans mon fichier /etc/hosts/ sous Linux/OSX, comment créer un sous-domaine générique ?

comment modifier /etc/hosts à partir de scripts shell ?

Créer des modèles avec Linux dans un script Shell ?

Limite de taille de /etc/hosts (Linux)