linux - cambiar - nano etc hosts
Agregar nombre de host a/etc/hosts en Linux (6)
Usa avahi (que debería estar en tus repositorios de distribución), entonces puedes
$ ping youhostname.local
Pregunta: ¿Existe una manera fácil de agregar la dirección IP y el nombre de host de DHCP de una máquina Linux en / etc / hosts al inicio del sistema automáticamente?
Antecedentes: Mi máquina Linux tiene un nombre de host en / etc / hostname y no se resolverá cuando haga ping. Agregué manualmente mi nombre de host y dirección de IP en / etc / hosts para que funcione uno de mis programas Java relacionados con la red.
Gracias,
dhcpcd tiene una opción de -c/--script
para ejecutar un script externo cada vez que se configura o muestra una interfaz. Puede usar esto para actualizar manualmente el archivo de hosts con el nombre de host configurado.
De
ipaddr=$(ifconfig | grep ''inet addr:''| grep -v ''127.0.0.1'' | cut -d: -f2 | awk ''{ print $1}’)
host=`hostname`
fhost=`hostname -f`
echo "$ipaddr $fhost $host" >> /etc/hosts
cat /etc/hosts
Tomé lo que @Markus hizo y lo puse en un guión normal. Esto funciona en mi caja de Fedora 20:
#!/bin/sh
MYHOST=firtree
echo "before:"
cat /etc/hosts
# Remove current line with hostname at the end of line ($ means end of line)
sed -i ''/''$MYHOST''$/ d'' /etc/hosts
echo "after remove: "
cat /etc/hosts
IPADDR=$(ifconfig | awk -F" +|:" ''/inet addr/ && $4 != "127.0.0.1" {print $4}'')
echo "$IPADDR $MYHOST" >>/etc/hosts
echo "ip: " $IPADDR
echo "final: "
cat /etc/hosts
Esto tiene que ejecutarse como root, y probablemente debería ir en una carpeta init.d.
Yo personalmente uso este script para establecer mi nombre de host (uno existente) + IP dinámica en el /etc/hosts
:
#!/bin/bash
ipaddr=$(/sbin/ifconfig eth0| grep ''inet addr'' | cut -d: -f2 | awk ''{print $1}'')
hn=$(hostname)
hnd=$(hostname -f)
sed -i ''2s/.*/''$ipaddr'' ''$hnd'' ''$hn''/'' /etc/hosts
Saludos cordiales,
En Ubuntu, agregue un archivo ejecutable en el directorio /etc/network/if-up.d
. Los archivos en este directorio se ejecutan después de que el administrador de red configura una interfaz de red.
Puede adaptar el siguiente script:
#!/bin/sh
set -e
if [ "$IFACE" = lo ]; then
exit 0
fi
myHostName=`hostname`
# Remove current line with hostname at the end of line ($ means end of line)
sed -i ''/''$myHostName''$/ d'' /etc/hosts
ipaddr=$(ifconfig | grep ''inet addr:''| grep -v ''127.0.0.1'' | cut -d: -f2 | awk ''{ print $1}'')
echo "$ipaddr $myHostName" >>/etc/hosts