To kolejna wskazówka, która może nam pomóc w określonych sytuacjach. Robię ten post bardziej jako przypomnienie, bo wiem, że będę tego potrzebował w pewnym momencie znowu hahaha.
Kiedy robimy skrypt w bash, a użytkownik musi wpisać adres IP, aby później (skrypt) zrobić coś przy użyciu tego adresu IP, czy wiesz, gdzie wszystko może pójść nie tak? ... że użytkownik NIE WPROWADZA IP, żeby wstawić jakieś bzdury lub niekompletne IP lub coś w tym rodzaju, ci, którzy programują, wiedzą, co mam na myśli ... ponieważ musi być zaprogramowany z myślą, że wydarzy się nawet najbardziej absurdalny O_O.
Aby uniknąć takiej sytuacji, istnieją funkcje lub metody sprawdzania poprawności adresu IP, to znaczy sprawdzania, czy dane, które wprowadził użytkownik, są rzeczywiście adresem IP, czy nie.
Tutaj je zostawiam:
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
}
Kiedy użytkownik wpisze „coś”, to coś będzie wartością zmiennej wątpliwy ... kod będzie wyglądał następująco:
echo " Inserte lo que desea comprobar si es una IP."
read "ipdudosa"
A teraz wskażemy, aby zweryfikować zawartość lub wartość wątpliwy z powyższą funkcją, która sprawdzi, czy faktycznie jest to adres IP, czy nie. Jeśli jest to adres IP, powie tak, a jeśli nie, powie nam, że NIE jest to adres IP:
if validar_ip ipdudosa;
then echo "Sí, es una IP correcta :D";
else
echo "No, eso NO es una IP";
fi
Cały skrypt zostawiam tutaj:
Funkcja sprawdzania poprawności adresu IP (przykład)
Spójrz dobrze, że na początku oświadczam, że jest: #! / bin / bash ... jeśli włożyli #! / Bin / sh To nie zadziała, spędziłem prawie 2 dni walcząc i protestując bo funkcja u mnie nie działała, a było to co miałem na sh zamiast bash hahaha.
Cóż, nic więcej do dodania, są do tego funkcje Python, Perl i inne języki ... w rzeczywistości ten, który wam pokazuję, nie jest jedynym sposobem na sprawdzenie poprawności adresów IP w bash, ale to było dla mnie bardzo dobre, dlatego się nim dzielę 🙂
pozdrowienia
Doskonały! Bardzo interesujące. Wielkie dzięki.
Dziękuję za zatrzymanie się i skomentowanie 😀
Świetny! teraz spróbujmy dostosować to „if [[$ ip = ~ ^ [0-9] {1,3} \. [0-9] {1,3} \. [0-9] {1,3} \ . [0-9] {1,3}]]; ” tak, że wykrywa błąd w ipv6 ... gwałtowny ... o_0 bałagan, który należy umieścić w szesnastkowym i 128-bitowym numerze.
Jasne, to hipotetyczny przypadek, o którym wspomniałem 🙂
Do IPv6 ... cholera, nawet nie żartuję ... odpuść sobie ... jeśli nawet nie rozumiem dobrze, o co chodzi w IPv6 (operacja), nawet nie próbuję zweryfikować IP LOL!
hehe, jeśli to prawda, myślenie o tym jest przerażające, ale takie podejście istnieje 😛
To już działa, po prostu uruchom ./script, a nie skrypt sh.
Tak, oczywiście, jeśli wykonasz skrypt sh, spróbuje zinterpretować go za pomocą sh ... musisz zrobić skrypt bash, aby był taki sam jak ./script.sh 😉
Cześć, dziękuję za pomoc, była bardzo pomocna.