Comment puis-je imprimer une plage d'adresses IP sur la ligne de commande Linux en utilisant la commande "seq"? Par exemple: j'ai besoin de seq pour imprimer une plage d'ip de 10.0.0.1 à 10.0.0.23. On dirait que la période entre les octets fait que le nombre se comporte comme une virgule flottante. J'obtiens une "erreur d'argument à virgule flottante non valide". J'ai essayé d'utiliser l'option -f. Peut-être que je ne l'utilise pas correctement. Mais cela m'a quand même donné une erreur. J'essaye quelque chose de similaire à
seq 10.0.0.2 10.0.0.23
Existe-t-il une autre façon d'imprimer des adresses IP dans une plage sous Linux autre que de passer à Excel?
linux
bash
command-line
user2476714
la source
la source
bash
, cette plage d'adresses peut être imprimée avececho 10.0.0.{2..23}
. La{..}
construction est appelée expansion d'accolade.Réponses:
Utilisez un format:
Malheureusement, cela n'est pas évident car GNU n'aime pas écrire de pages de manuel.
la source
info coreutils 'seq invocation'
.%g
n'est pas documenté non plus; vous devez rechercher la bonneprintf
page d'informations.man 3 printf
est également une bonne idée au cas où le lecteur ne serait pas familier avec les chaînes de format printf. Cela dit, je ne suis pas non plus un grand fan de leur utilisation de texinfo, mais c'était juste ma suggestion pour améliorer votre réponse en utilisant la documentation qui existe plutôt que de signaler la documentation manquante dans un format spécifique.Il y a l'
prips
utilitaire qui génère une liste IP à partir d'une plage ou d'un CIDR. Utile pour travailler avec de grandes plages:la source
Vous pouvez utiliser la commande sed avec seq pour imprimer la plage d'adresses IP.
OU en utilisant echo et tr
la source
La
printf
commande effectue une itération implicite si elle reçoit plus d'arguments que de spécificateurs de conversion. Par exemple:Il y a deux conversions, mais six arguments. Ainsi, trois répétitions de la logique de formatage se produisent, en marchant sur les arguments par paire.
Avec cela, nous pouvons faire:
La
printf
commande, et son comportement répétitif, sont au standard POSIX : "L'opérande de format doit être réutilisé aussi souvent que nécessaire pour satisfaire les opérandes d'argument." D'un autre côté, laseq
commande ne l'est pas.la source
la source
Si nous supprimons l'exigence d'utiliser la
seq
commande et supposons que laipcalc
commande est disponible et que laprips
commande Ubuntu ne l'est pas, alors nousprips
pouvons l'implémenter en tant que fonction shell Bash:Notez que cela inclura l'adresse réseau et l'adresse de diffusion dans la plage; si c'est un problème, supprimez la première et la dernière adresse du résultat.
la source