La siguiente secuencia de comandos:

IP=`ifconfig en0 inet | grep inet | sed 's/.*inet *//; s/.*//'`

aísla la dirección de IP de ipconfig comando y la pone en la variable $IP.
¿Cómo puedo ahora aislar el último octeto de la dirección IP y la puso en una segunda variable – $CN

por ejemplo:

$IP = 129.66.128.72 $CN = 72 o $IP = 129.66.128.133 $CN = 133…

  • Es mejor no usar la vieja y obsoleta de la espalda-tics, pero en lugar de utilizar paréntesis como este IP=$(ifconfig.....)
InformationsquelleAutor blackwire | 2014-08-04

4 Comentarios

  1. 0

    De acceso directo:

    read IP CN < <(exec ifconfig en0 | awk '/inet /{ t = $2; sub(/.*[.]/, "", t); print $2, t }')
    • <( ... ) no es estándar y no se admite por todos los proyectiles.
    • Por supuesto.
  2. 12

    Uso de «cortar» comando con . delimitador:

    IP=129.66.128.72
    CN=`echo $IP | cut -d . -f 4`

    CN contiene ahora el último octeto.

    • Usted puede acortar algunos:CN=$(cut -d. -f4 <<<$IP)
    • <<< no es estándar y no se admite por todos los proyectiles.
  3. 6

    En BASH puede utilizar:

    ip='129.66.128.72'
    cn="${ip##*.}"
    echo $cn
    72

    O el uso de sed por no BASH:

    cn=`echo "$ip" | sed 's/^.*\.\([^.]*\)$//'`
    echo $cn
    72

    Utilizando awk

    cn=`echo "$ip" | awk -F '\.' '{print $NF}'`
    • Menor uso de awk cn=$(awk -F. '$0=$4' <<< $ip)
    • Creo que sólo BASH apoya <<< por eso me tubos utilizados en BASH no soluciones.
    • Ah bueno,no sabía que era específico de bash, es $() bash específicos así ?
    • No, $(...) es en el estándar POSIX.
    • Ah que es correcto, gracias por la corrección de @chepner mí. Siempre es útil.
  4. 1

    Yo no los uso ifconfig obtener la IP, en lugar de utilizar esta solución, desde que se pone la IP se necesita para llegar a internet, independientemente de la interfaz.

    IP=$(ip route get 8.8.8.8 | awk '{print $NF;exit}')

    y para obtener el último octeto:

    last=$(awk -F. '{print $NF}' <<< $IP)

    o conseguir el último octeto directamente:

    last=$(ip route get 8.8.8.8 | awk -F. '{print $NF;exit}')

Dejar respuesta

Please enter your comment!
Please enter your name here