una saber por pais otro ordenador nombre equipo dirección direccion cómo como cambiar django bash unix networking ip-address

django - por - saber el hostname de una ip linux



¿Cómo puedo encontrar la dirección IP de mi computadora usando Bash Shell? (14)

De vez en cuando, tengo que iniciar el servidor de desarrollo de Django y que otras máquinas de mi red puedan verlo, como se describe aquí:

http://docs.djangoproject.com/en/dev/ref/django-admin/#runserver

La dirección IP de mi máquina tiende a cambiar de vez en cuando, así que me gustaría tener un pequeño alias de shell o algo que escupe el comando manage.py con la dirección IP actual de mi máquina, quizás así:

python manage.py runserver $(COMMAND TO FIND MY MACHINE’S IP ADDRESS GOES HERE):8000


Aquí una solución para encontrar la dirección IP actual:

route -n get default|grep interface|awk ‘{ print $2 }’|xargs ipconfig getifaddr

probado solo en Mac.


El siguiente comando funciona perfectamente para mí en RHEL 6.3:

ifconfig | grep -v ''127.0.0.1'' | sed -n ''s/.*inet addr:/([0-9.]/+/)/s.*//1/p''



Es posible que ya estés al tanto, pero corriendo

python manage.py runserver 0.0.0.0:8000

hace que su máquina sea visible para todos en la red.

¿Hay alguna razón por la que necesitarías especificar tu IP?


Esta es una manera rápida y sucia, que funciona bajo OSX

/sbin/ifconfig | grep ''inet '' | grep -v ''127.0.0.1'' | head -n1 | awk ''{print $2}''

Básicamente obtener todas las interfaces con una dirección IPV4, omita localhost y luego obtener la primera interfaz.

Además, use la ruta a ifconfig. He visto muchos frenos de script de shell cuando se usan desde ej. cron debido a la falla de PATH.


Esto puede no ser tan elegante como algunas de las otras soluciones, pero funciona en sistemas Linux y es más cómodo de ver que una expresión regular:

ifconfig eth0 | grep ''inet addr:'' | awk ''{print $2}'' | awk -F '':'' ''{print $2}''


Esto verifica su interfaz predeterminada y la utiliza para recuperar su IP principal. Útil cuando tienes muchas interfaces y toneladas de direcciones IP virtuales:

netstat -rn | gawk ''/UG/ {print $NF}'' | xargs ifconfig | gawk ''match($0,/inet addr:(.*) B/,a) {print a[1]}''


La gente usa conteos de caracteres para extraer las columnas de la derecha desde la línea de dirección IP, pero al usar espacios como un delimitador esto hace que sea más escalable para direcciones IP de diferentes longitudes ...

ifconfig en1 | grep inet | grep -v inet6 | cut -d" " -f2


La mejor solución sería:

ifconfig | sed -n ''s/.*inet addr:/([0-9.]/+/)/s.*//1/p''


Prueba esto (si eres un usuario de Arch)

resolveip -s $HOSTNAME

Alternativa

Para obtener una dirección IPv4 puede usar:

host $(uname -n) | grep "address" | grep -v "IPv6" | head -n 1 | awk ''{print $4}''

Para obtener IPv6 uno:

host $(uname -n) | grep "IPv6 address" | head -n 1 | awk ''{print $5}''

Puede reemplazar $ (uname -n) con $ (nombre de host) si lo desea.


Recapitulación: si desea copy/paste en la línea de comando y obtener la dirección IP de la red, esto es lo que funciona en Mac (con WiFi):

echo $(ifconfig en0 | grep inet | grep -v inet6 | cut -d" " -f2)

Aquí lo está asignando a la variable de script bash:

LOCAL_IP=$(ifconfig en0 | grep inet | grep -v inet6 | cut -d" " -f2)

Esto se basa en las respuestas de y


Thi debería funcionar tan bien como otros comandos que ya he visto:

ifconfig eth0 | grep inet | awk ''{print $2}'' | cut -d'':'' -f2

  • Reemplace eth0 con la interfaz deseada (eth0, eth1, wlan0 ...)

I̶ ̶t̶h̶i̶n̶k̶ ̶y̶o̶u̶ ̶c̶a̶n̶ ̶a̶l̶s̶o̶ ̶w̶r̶i̶t̶e̶: ̶

̶ ̶ ̶ ̶ ̶ ̶ ̶ ̶ ̶ ̶ ̶ ̶ ̶ ̶ ̶ ̶ ̶ ̶ ̶ ̶ ̶ ̶ ̶ ̶ ̶ ̶ ̶ ̶ ̶ ̶ ̶ ̶ ̶ ̶ ̶ ̶ ̶ ̶ ̶ ̶ ̶ ̶ ̶ ̶ ̶ ̶ ̶ ̶ ̶ ̶ ̶ ̶ ̶ ̶ ̶ ̶ ̶ ̶ ̶ ̶ ̶ ̶ ̶ ̶ ̶ ̶ ̶ ̶


ifconfig es probablemente lo que buscas. Sin embargo, necesitarás ejecutarlo a través de grep para filtrar algo del ruido.


ifconfig en0 | grep inet | grep -v inet6

Se espera que la salida de arriba sea de la siguiente forma:

inet 192.168.111.1 netmask 0xffffff00 broadcast 192.168.111.255

Agregue una instrucción awk para imprimir la segunda columna para evitar el uso del corte (awk es una herramienta bastante común para Unix):

ifconfig en0 | grep inet | grep -v inet6 | awk ''{print $2}''

Utilizo lo siguiente para obtener la dirección IP actual cuando estoy en una LAN donde los primeros números de la IP son siempre los mismos (reemplace 192.168.111 con sus propios números):

ifconfig | grep 192.168.111 | awk ''{print $2}''

Para obtener la ip de otra máquina que conozca el nombre, intente (reemplace el nombre de host y 192.168.111 con sus propios valores):

ping -c 1 hostname | grep 192.168.11 | grep ''bytes from'' | awk ''{print $4}'' | sed ''s/://g''