Перевірте, чи це правильний IP-адрес у Bash (функція перевірки IP-адреси)

Це ще одна порада, яка може допомогти нам у певних ситуаціях. Я роблю цю публікацію більше як нагадування, бо знаю, що мені це колись знову знадобиться ха-ха-ха.

Коли ми робимо якийсь сценарій в бити, а користувач повинен ввести IP-адресу, щоб пізніше ми (сценарій) зробили щось за допомогою цієї IP-адреси, чи знаєте ви, де все може піти не так? ... що користувач НЕ вводить IP-адресу, ставить будь-які дурниці або неповні IP-адреси або щось подібне, ті, хто програмує, знають, що я маю на увазі ... тому що це має бути запрограмовано, думаючи, що трапиться навіть найбезглуздіший O_O.

Саме для того, щоб уникнути цієї ситуації, існують функції або методи для перевірки ІР, тобто для перевірки, чи дані, які користувач ввів, насправді є ІП чи ні.

Тут я їх залишаю:

function validar_ip()
{
local  ip=$ipdudosa
local  stat=1
if [[ $ip =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]];
then
OIFS=$IFS
IFS='.'
ip=($ip)
IFS=$OIFS
[[ ${ip[0]} -le 255 && ${ip[1]} -le 255  && ${ip[2]} -le 255 && ${ip[3]} -le 255 ]] stat=$?
fi
return $stat
}

Коли користувач вводить "щось", це щось буде значенням змінної сумнівний ... код буде:
echo "   Inserte lo que desea comprobar si es una IP."
read "ipdudosa"

А зараз ми вкажемо для перевірки змісту або значення сумнівний з наведеною вище функцією, і це перевірить, чи це насправді IP-адреса чи ні. Якщо це IP, він скаже так, якщо ні, то скаже нам, що це НЕ IP:

if validar_ip ipdudosa;
then echo "Sí, es una IP correcta :D";
else
echo "No, eso NO es una IP";
fi

Повний сценарій я залишаю тут:

Функція перевірки IP (приклад)

Добре подивіться, що на початку я заявляю, що це: #! / бін / баш ... якщо поставлять #! / Bin / ш Це не спрацює, я провів майже 2 дні бойових дій та протесту, оскільки функція не працювала, і це було те, що я мав на sh замість баш ха-ха-ха.

Ну нічого іншого додати, для цього є функції для Python, Perl та інші мови ... насправді, ця, яку я вам показую, не є єдиним способом перевірки IP-адрес бити, але для мене це було дуже добре, тому я цим поділяюсь 🙂

привіт


Залиште свій коментар

Ваша електронна адреса не буде опублікований. Обов'язкові для заповнення поля позначені *

*

*

  1. Відповідальний за дані: Мігель Анхель Гатон
  2. Призначення даних: Контроль спаму, управління коментарями.
  3. Легітимація: Ваша згода
  4. Передача даних: Дані не передаватимуться третім особам, за винятком юридичних зобов’язань.
  5. Зберігання даних: База даних, розміщена в мережі Occentus Networks (ЄС)
  6. Права: Ви можете будь-коли обмежити, відновити та видалити свою інформацію.

  1.   езіток - сказав він

    Ідеально! Дуже цікаво. Дуже дякую.

    1.    KZKG ^ Гаара - сказав він

      Дякуємо, що завітали та коментували 😀

  2.   тарегон - сказав він

    Чудово! тепер спробуємо адаптувати це "якщо [[$ ip = ~ ^ [0-9] {1,3} \. [0-9] {1,3} \. [0-9] {1,3} \ . [0-9] {1,3}]]; " так що він виявляє, коли ipv6 пишеться погано ... жорстоко ... o_0 безлад, який буде ставити шістнадцяткову і його 128 біт.

    Звичайно, це гіпотетичний випадок, який я порушив 🙂

    1.    KZKG ^ Гаара - сказав він

      До IPv6 ... блін, я навіть не жартую ... пустіть це ... якщо я навіть добре не розумію, що таке IPv6 (робота), я навіть не намагаюся перевірити IP LOL!

      1.    тарегон - сказав він

        хе-хе, якщо це правда, страшно подумати про це, але підхід існує 😛

  3.   Алехандро Мора - сказав він

    Це вже працює, просто запустіть ./script, а не sh скрипт.

    1.    KZKG ^ Гаара - сказав він

      Так, звичайно, якщо ви зробите сценарій sh, він спробує інтерпретувати його за допомогою sh ... вам доведеться зробити скрипт bash, щоб зробити його таким же, як ./script.sh

  4.   Анатур - сказав він

    Привіт, дякую за вашу допомогу, це було дуже корисно.