Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Outil en CLI pour convertir une IPv4 en entier et réciproquement

4 réponses
Avatar
Olivier
Bonjour,

Qui connait le nom d'un paquet Debian comprenant un outil de
conversion d'IPv4 en entier et réciproquement ?
Sauf erreur ipcalc et ipcalc-ng ne font pas cette conversion.

J'ai trouvé des exemples en bash, ici ou lÍ  mais regarderai volontiers
un outil dédié.

Slts

4 réponses

Avatar
Stephane Bortzmeyer
On Fri, Mar 11, 2022 at 05:29:01PM +0100,
Olivier wrote
a message of 11 lines which said:
conversion d'IPv4 en entier et réciproquement ?

% python3 -c "import sys, ipaddress; addr = ipaddress.ip_address(sys.argv[1]); print(int(addr))" 192.0.2.1
3221225985
Avatar
nicolas.patrois
Le 11/03/2022 17:40:52, Stephane Bortzmeyer a écrit :
% python3 -c "import sys, ipaddress; addr > ipaddress.ip_address(sys.argv[1]); print(int(addr))" 192.0.2.1
3221225985

Ha, c’est juste ça ?
sum(256**(3-i)*a for i,a in enumerate(map(int,"192.0.2.1".split("."))))



3221225985
nicolas patrois : pts noir asocial
--
RÉALISME
M : Qu'est-ce qu'il nous faudrait pour qu'on nous considère comme des humains ? Un cerveau plus gros ?
P : Non... Une carte bleue suffirait...
Avatar
Marc Chantreux
salut,
Qui connait le nom d'un paquet Debian comprenant un outil de
conversion d'IPv4 en entier et réciproquement ?

les réponses suivantes sont Í  coté de la plaque vu que tu
souhaites un outils dédié mais pourrais tu satisfaire ma curiosité
en m'expliquant Í  quoi ça peut servir?
ipv4int() <<. bc
ibase
$( for i; do
echo $i | tr . 'n' | tac | xargs printf '%02hX'
echo
done)
.
// vi: noet
#include <stdio.h>
#include <arpa/inet.h>
int
main (int argc, char ** argv ) {
struct in_addr addr;
for (uint8_t i=1; i<argc; i++) {
inet_pton(AF_INET, argv[i], &addr);
printf( "%u %sn", addr.s_addr, inet_ntoa(addr) );
}
}
'soir
marc
Avatar
Marc Chantreux
salut Stéphane,
% python3 -c "import sys, ipaddress; addr = ipaddress.ip_address(sys.argv[1]); print(int(addr))" 192.0.2.1
3221225985

ne faudrait-il pas tenir compte de l'endianisme? pour ma part j'ai:
/tmp/ipv4int 192.0.2.1
16908480 192.0.2.1
en executant ce code:
// vi: noet
#include <stdio.h>
#include <arpa/inet.h>
int
main (int argc, char ** argv ) {
struct in_addr addr;
for (uint8_t i=1; i<argc; i++) {
inet_pton(AF_INET, argv[i], &addr);
printf( "%u %sn", addr.s_addr, inet_ntoa(addr) );
}
}
'soir
marc