Bashで正しいIPかどうかを確認します(IPを検証する機能)

これは、特定の状況で役立つもうXNUMXつのヒントです。 いつかまたこれが必要になることを知っているので、私はこの投稿を思い出させるためにもっとや​​ります。

でスクリプトを実行しているとき bash、およびユーザーはIPアドレスを入力する必要があります。後で私たち(スクリプト)がそのIPアドレスを使用して何かを行うために、すべてがうまくいかない可能性がある場所を知っていますか? ...ユーザーがIPを入力しないこと、意味のないIPや不完全なIPなどを入力すること、プログラムする人は私が何を意味するかを知っています...最もばかげたことさえ起こると考えてプログラムする必要があるため O_O.

この状況を正確に回避するために、IPを検証する、つまり、ユーザーが入力したデータが実際にIPであるかどうかを確認する機能または方法があります。

ここに私はそれらを残します:

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 / bashに ...彼らが置くなら #!/ bin / shを これは機能しません。機能が機能しなかったため、私はほぼ2日間、戦いと抗議に費やしました。 sh bashhahahaの代わりに。

追加するものは他にありません。これには関数があります。 Python , パール および他の言語...実際、私があなたに示すこれは、IPを検証する唯一の方法ではありません bash、しかしそれは私にとって非常に良かったので私はそれを共有します🙂

よろしく


コメントを残す

あなたのメールアドレスが公開されることはありません。 必須フィールドには付いています *

*

*

  1. データの責任者:MiguelÁngelGatón
  2. データの目的:SPAMの制御、コメント管理。
  3. 正当化:あなたの同意
  4. データの伝達:法的義務がある場合を除き、データが第三者に伝達されることはありません。
  5. データストレージ:Occentus Networks(EU)がホストするデータベース
  6. 権利:いつでも情報を制限、回復、削除できます。

  1.   エジトク

    完璧です! とても興味深い。 どうもありがとう。

    1.    KZKG ^我愛羅

      立ち寄ってコメントしてくれてありがとう😀

  2.   タレゴン

    すごい! では、これを「if [[$ ip =〜^ [0-9] {1,3} \。[0-9] {1,3} \。[0-9] {1,3} \」に適合させてみましょう。 。[0-9] {1,3}]]; " ipv6がひどく書かれていることを検出するように...暴力的... o_0HEXadecimalとその128ビットを置くことになる混乱。

    確かに、これは私が提起した架空のケースです🙂

    1.    KZKG ^我愛羅

      IPv6に…くそー、冗談すら…そのままにしておきます…IPv6が何であるか(操作)さえ理解していなければ、私はIP LOLを検証しようとさえしません!

      1.    タレゴン

        hehe、それが本当なら、それについて考えるのは恐ろしいですが、アプローチは存在します😛

  3.   アレハンドロモーラ

    すでに機能しています。shscriptではなく./scriptを実行するだけです。

    1.    KZKG ^我愛羅

      はい、もちろん、shスクリプトを実行すると、shで解釈しようとします.... / script.shと同じにするためにbashスクリプトを実行する必要があります😉

  4.   アナサー

    こんにちは、あなたの助けに感謝します、それは非常に役に立ちました。