Wie kann ich mit dem Befehl "seq" einen Bereich von IP-Adressen in der Linux-Befehlszeile drucken? Zum Beispiel: Ich brauche seq, um einen IP-Bereich von 10.0.0.1 bis 10.0.0.23 zu drucken. Die Periode zwischen den Oktetten scheint zu bewirken, dass sich die Zahl wie ein Gleitkomma verhält. Ich erhalte einen "ungültigen Gleitkomma-Argumentfehler". Ich habe versucht, die Option -f zu verwenden. Vielleicht benutze ich es nicht richtig. Aber es gab mir immer noch einen Fehler. Ich versuche etwas Ähnliches
seq 10.0.0.2 10.0.0.23
Gibt es eine andere Möglichkeit, IP-Adressen in einem Bereich unter Linux zu drucken, als auf Excel umzuschalten?
linux
bash
command-line
user2476714
quelle
quelle
bash
kann dieser Adressbereich gedruckt werdenecho 10.0.0.{2..23}
. Das{..}
Konstrukt heißt Klammererweiterung.Antworten:
Verwenden Sie ein Format:
Leider ist dies nicht offensichtlich, da GNU keine Manpages schreibt.
quelle
info coreutils 'seq invocation'
.%g
das dort auch nicht dokumentiert ist; Sie müssen die richtigeprintf
Infoseite suchen.man 3 printf
Fall ist auch eine Referenzierung eine gute Idee, falls der Leser mit Zeichenfolgen im printf-Format nicht vertraut ist. Trotzdem bin ich auch kein großer Fan der Verwendung von texinfo, aber dies war nur mein Vorschlag, Ihre Antwort zu verbessern, indem Sie die vorhandene Dokumentation verwenden, indem Sie nur auf die fehlende Dokumentation in einem bestimmten Format hinweisen.Es gibt das
prips
Dienstprogramm, das eine IP-Liste aus einem Bereich oder CIDR generiert. Nützlich für Arbeiten mit großen Reichweiten:quelle
Sie können den Befehl sed mit seq verwenden, um den IP-Adressbereich zu drucken.
ODER mit echo und tr
quelle
Der
printf
Befehl führt eine implizite Iteration durch, wenn mehr Argumente als Konvertierungsspezifizierer angegeben werden. Zum Beispiel:Es gibt zwei Konvertierungen, aber sechs Argumente. Es treten also drei Wiederholungen der Formatierungslogik auf, die paarweise über die Argumente marschieren.
Damit können wir tun:
Der
printf
Befehl und sein sich wiederholendes Verhalten entsprechen dem POSIX-Standard : "Der Formatoperand muss so oft wie nötig wiederverwendet werden, um die Argumentoperanden zu erfüllen." Auf der anderen Seite ist derseq
Befehl nicht.quelle
quelle
Wenn wir die Anforderung zur Verwendung des
seq
Befehls entfernen und davon ausgehen, dass deripcalc
Befehl verfügbar ist und der Ubuntu-prips
Befehl nicht,prips
kann er als Bash-Shell-Funktion implementiert werden:Beachten Sie, dass dies die Netzwerkadresse und die Broadcast-Adresse im Bereich enthält. Wenn dies ein Problem ist, löschen Sie die erste und letzte Adresse aus dem Ergebnis.
quelle