Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak skutecznie przekonwertować długie na int na czterokropkowe adresy IP w bash

Ponieważ prosiłeś o Bash:

INET_NTOA() { 
    local IFS=. num quad ip e
    num=$1
    for e in 3 2 1
    do
        (( quad = 256 ** e))
        (( ip[3-e] = num / quad ))
        (( num = num % quad ))
    done
    ip[3]=$num
    echo "${ip[*]}"
}

INET_ATON ()
{
    local IFS=. ip num e
    ip=($1)
    for e in 3 2 1
    do
        (( num += ip[3-e] * 256 ** e ))
    done
    (( num += ip[3] ))
    echo "$num"
}

Przykłady:

$ INET_ATON 10.2.1.255
167903743
$ INET_NTOA 167903743
10.2.1.255

Oto wersja, która będzie działać w dowolnej z powłok Bourne'a, którą wypróbowałem, w tym dash, ksh, kilku wersjach Bash, BusyBox ash, zsh (z -y ), a nawet Heirloom Bourne Shell .

INET_NTOA() {
    num=$1
    ip=
    for e in 3 2 1
    do
        quad=`echo "256 ^ $e" | bc`
        if [ -n "$ip" ]
        then
            ip=$ip.
        fi
        ip=$ip`echo "$num / $quad" | bc`
        num=`echo "$num % $quad" | bc`
    done
    ip=$ip.$num
    echo "$ip"
}

INET_ATON ()
{
    num=0
    e=3
    saveIFS=$IFS
    IFS=.
    set -- $1
    IFS=$saveIFS
    for ip in "[email protected]"
    do
        num=`echo "$num + $ip * 256 ^ $e" | bc`
        e=`echo "$e - 1" | bc`
    done
    echo "$num"
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nieprawidłowa wartość całkowita:„” dla kolumny „id” w wierszu 1

  2. Obsługa przygotowanych wyciągów po stronie serwera z PDO?

  3. Laravel 5.2 – Użyj ciągu znaków jako niestandardowego klucza głównego dla elokwentnej tabeli, staje się 0

  4. Jak uzyskać dostęp do internetowej bazy mysql w Androidzie?

  5. Jak uzyskać dzisiejsze rekordy w MySQL