Как проверить адрес ipv4 в оболочке. Как это *.*.1.* или *.*.0.*?

jq предоставляет богатый язык выражений для выбора элементов из документа JSON.

Таким образом, она аналогична команде sel из xmlstartlet (которая принимает выражение XPath).

Например, чтобы извлечь список доступных версий ядра CentOS 7 в цифровом океане - в формате записи:

$ jq '[ .kernels[] | select(.name | test("^CentOS 7 x64")) | del(.name)
        | "\(.version) \(.id)"] | .[]' kernels.json

Или то же самое, немного упрощенное:

jq '.kernels[] | select(.name | test("^CentOS 7 x64")) |
     "\(.version) \(.id)" ' kernels.json

Где json можно получить следующим образом:

$ curl -o kernels.json -X GET -H "Content-Type: application/json" \
    -H "Authorization: Bearer $bearer" \
 "https://api.digitalocean.com/v2/droplets/$droplet/kernels?page=1&per_page=1000"

Существует также ObjectPath , другой язык запросов для JSON, хотя jq кажется более доступным (например, он упакован в Fedora 23).

Повторное использование таких фрагментов запроса в программах легко, например существует несколько привязок для jq (например, для Python ), а ObjectPath также доступен как модуль Python.

1
17.10.2018, 21:34
3 ответа

Вы можете использовать ip addrдля отображения IP-адресов всех интерфейсов и подсетей на вашем хосте:

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

Если вам не нужна подсеть, вы можете удалить ее:

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

Согласно комментарию, если вы хотите по какой-то причине видеть только третий октет вашего IP-адреса (es ), это достаточно просто:

# 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
2
27.01.2020, 23:23

Я нашел ответ, ребята Я объясню i = 1, потому что это

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

Вот чего я хочу В любом случае вы оба помогли получить правильный ответ, ребята! Спасибо

0
27.01.2020, 23:23
#!/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
1
27.01.2020, 23:23

Теги

Похожие вопросы