Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: BASH: Как проверить, является ли строка IP-адресом?  (Прочитано 2222 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн El Scorpio

  • Автор темы
  • Участник
  • *
  • Сообщений: 158
    • Просмотр профиля
Добрый день

Пишу программу на BASH
Ищу простой способ, которым можно было бы проверить, является ли строка IP-адресом

Оффлайн absent

  • Активист
  • *
  • Сообщений: 368
  • Ubuntu 16.04
    • Просмотр профиля
если решать "в лоб", можно как-нибудь так:
ip="127.0.0.1"; if [ "$(echo $ip | grep -v "[^0-9.]" | awk -F "." '$1<=255 && $2 <=255 && $3<=255 && $4<=255')" ]; then echo "ip="$ip; fiнедоглядел ошибку: 192.168.0.155.0.1 тоже пройдёт проверку
тогда так, для верности:ip="192.168.0.155"; if [ "$(echo $ip | grep -P '^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$' | awk -F "." '$1<=255 && $2 <=255 && $3<=255 && $4<=255')" ]; then echo "ip="$ip; fi
« Последнее редактирование: 01 Июня 2012, 08:39:03 от absent »

Оффлайн aSmile

  • Активист
  • *
  • Сообщений: 755
    • Просмотр профиля
Не уверен, что нужно именно это, но вдруг пригодится.
user@dell:~$ echo 1.1.1.1 | grep -Eo '(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)'
1.1.1.1
user@dell:~$ echo 300.300.330.300 | grep -Eo '(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)'
user@dell:~$ echo 300.300 | grep -Eo '(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)'
user@dell:~$

 

Страница сгенерирована за 0.014 секунд. Запросов: 22.