• 29-11-2022, 13:19:26
    #1
    test="1.1.1.1 3.3.3.3 999.99.999.99"
    Bu şekilde olan test komutunu if else ile süzgeçten geçirmek istiyorum
    Multi bir şekilde geçmeli, yani tek ip adresini baz almayacak yukarıdaki gibi toplu ölçeçek

    if [ "$test" = REGEX ] ; then
    ....
    fi
    Şeklinde eğer test içerisinde 1.1.1.1 -255.255.255.255 arasında bir adres yoksa veya 999.999.999 gibi yanlış adresleri ayırmam için regex gerekli:
    şimdiden teşekkürler
  • 29-11-2022, 13:24:25
    #2
    Buradakini deneyin hocam https://ihateregex.io/expr/ip/
  • 29-11-2022, 13:28:11
    #3
    bahax41 adlı üyeden alıntı: mesajı görüntüle
    Buradakini deneyin hocam https://ihateregex.io/expr/ip/
    Denemiştim hocam önceden
    1 adres için çalışıyor, multi de çalışmıyor. text içerisinden tek tek çektirilebilinir ama bana bu şekilde lazım yukarıdaki gibi
  • 29-11-2022, 13:28:16
    #4
    #!/bin/bash
    
    IPLIST="127.0.0.1;255.255.255.256"
    
    ipvalid() {
          # Set up local variables
          local ip=${1:-NO_IP_PROVIDED}
          local IFS=.; local -a a=($ip)
          # Start with a regex format test
          [[ $ip =~ ^[0-9]+(\.[0-9]+){3}$ ]] || return 1
          # Test values of quads
          local quad
          for quad in {0..3}; do
            [[ "${a[$quad]}" -gt 255 ]] && return 1
          done
          return 0
        }
    
    for i in $(echo $IPLIST | tr ";" "\n")
    do
        if ipvalid "$i"; then
          echo "success ($i)"
        else
          echo "fail ($i)"
        fi
    done
    Şu şekilde birşeyle çözersiniz
  • 29-11-2022, 13:30:44
    #5
    CihanAksoy adlı üyeden alıntı: mesajı görüntüle
    #!/bin/bash
    
    IPLIST="127.0.0.1;255.255.255.256"
    
    ipvalid() {
          # Set up local variables
          local ip=${1:-NO_IP_PROVIDED}
          local IFS=.; local -a a=($ip)
          # Start with a regex format test
          [[ $ip =~ ^[0-9]+(\.[0-9]+){3}$ ]] || return 1
          # Test values of quads
          local quad
          for quad in {0..3}; do
            [[ "${a[$quad]}" -gt 255 ]] && return 1
          done
          return 0
        }
    
    for i in $(echo $IPLIST | tr ";" "\n")
    do
        if ipvalid "$i"; then
          echo "success ($i)"
        else
          echo "fail ($i)"
        fi
    done
    Şu şekilde birşeyle çözersiniz
    Bu Biraz uzun hocam daha kısa basit birşey işimi çözecek, çözemezsem bu kod ile işleme alacağım teşekkürler

    IP_ADDRESS="12.12.12.255 2.2.2.2"
    test='(\b25[0-5]|\b2[0-4][0-9]|\b[01]?[0-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}'
    if [[ "$IP_ADDRESS" =~ ^$test$ ]] ; then
    echo 1
    else
    echo 2
    fi