Como pode verificar o endereço ipv4 no shell. Like is it *. *. 1. * ou *. *. 0. *?

1

Então, aqui eu tentei pegar o arquivo ifconfig, mas mesmo com erros com o comando ifconfig simples

!#/bin/sh
if [/home/pi/ifconfig | grep -Eo ‘inet (addr:)?([0-9]*\.){3}[0-9]*’ | grep -Eo ‘([0-9]*\.){3}[0-9]*’ | grep -v ‘127.0.0.1’ = *.*.1.*]
then
echo “good1”
else
echo “notGood2”
fi

Os erros que eu tenho

test: 2: test: [/home/pi/ifconfig: not found
grep: =: No such file or directory
grep: *.*.1.*]: No such file or directory
notGood2
    
por Nous0820 17.10.2018 / 19:09

3 respostas

2

Você pode usar ip addr para mostrar os endereços IP de todas as interfaces e sub-redes em seu host:

$ ip -f inet addr show | awk '$1 == "inet" { print $2 }'
127.0.0.1/8
192.168.0.2/24

Se você não se preocupa com a sub-rede, pode retirar isso:

$ ip -f inet addr show | awk '$1 == "inet" { print $2 }' | cut -d/ -f1
127.0.0.1
192.168.0.2

Por comentário, se você quiser ver por algum motivo apenas qual é o terceiro octeto do (s) seu (s) endereço (s) IP, isso é bastante simples:

# given this:
$ ip -f inet addr show | awk '$1 == "inet" { print $2 }'
127.0.0.1/8
192.168.25.2/24
# we can do this:
$ ip -f inet addr show | awk '$1 == "inet" { print $2 }' | cut -d. -f3
0
25
    
por 17.10.2018 / 19:48
1
#!/bin/bash
for i in $(/sbin/ifconfig | grep inet | awk '{print $2}')
do
    if [[ $i  =~ ^[0-9]{1,3}\.[0-9]{1,3}\.1|0.[0-9]{1,3}$ ]]; then
    echo "$i good1"
    else 
    echo "$i notGood2" 
    fi
done
    
por 17.10.2018 / 20:48
0

Eu encontrei a resposta pessoal Eu vou explicar o i = 1 porque é

i=1
if [ $i = 1 ]; then
echo $i good1
else
echo $i notGood2
fi

Isto é o que eu quero De qualquer forma, vocês dois ajudaram a conseguir a resposta certa! Thx

    
por 17.10.2018 / 22:49

Tags