GNU/Linux >> Tutoriales Linux >  >> Linux

Agregue una línea al archivo /etc/hosts con script de shell

Si estás en Mac o necesitas permiso de Sudo para esto, prueba esto:

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

Todavía te pedirá la contraseña.

forma alternativa de @kainjow

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

Asegúrate de usar el -i opción 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

De lo contrario,

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

agregaría la línea al final del archivo, lo que podría funcionar como espera.


Insertar/Actualizar entrada

Si desea insertar/actualizar mediante programación una entrada de hosts usando bash, aquí hay un script que escribí para hacer eso:

#!/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

La secuencia de comandos está diseñada para usarse con OS X, pero también funcionaría en Linux con ajustes menores.


Linux
  1. ¿Cómo agregar datos al búfer en el script de Shell?

  2. ¿Script de shell con función y parámetro como variables?

  3. CentOS / RHEL:cómo recuperarse de un archivo /etc/passwd eliminado

  4. Entendiendo el archivo /etc/hosts en Linux

  5. script bash agrega texto a la primera línea de un archivo

¿Es posible hacer que un script bash shell interactúe con otro programa de línea de comandos?

Agregar usuarios a sudoers a través de un script de shell

hacer eco o imprimir /dev/stdin /dev/stdout /dev/stderr

Ordenar con separador de campo

Diferencia entre /etc/hosts y /etc/resolv.conf

Límite de tamaño de /etc/hosts (Linux)