Tabellarische Ausgabe der Netzwerkschnittstellen
Mit - ip a - werden ja die Netzwerkschnittstellen angezeigt.
Ich möchte mit ein Batchscript folgende Ausgabe erreichen:
1 eth0 192.168.1.1 AD:13:67:56:14:D1
2 eth1 192.168.0.45 12:45:DF:76:52:99
Bekomme es einfach nicht hin.
Ich möchte mit ein Batchscript folgende Ausgabe erreichen:
1 eth0 192.168.1.1 AD:13:67:56:14:D1
2 eth1 192.168.0.45 12:45:DF:76:52:99
Bekomme es einfach nicht hin.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 657738
Url: https://administrator.de/forum/tabellarische-ausgabe-der-netzwerkschnittstellen-657738.html
Ausgedruckt am: 22.12.2024 um 15:12 Uhr
20 Kommentare
Neuester Kommentar
Moin,
wieder einmal die Frage zum Anfang: Wieso Batch und nicht Powershell? Meiner Meinung nach gibt es keinen Grund sich heutzutage auf Batch zu versteifen und die Möglichkeiten in Powershell nicht zu nutzen. Alles was du brauchst findest du in Powershell mit:
Gruß
Doskias
wieder einmal die Frage zum Anfang: Wieso Batch und nicht Powershell? Meiner Meinung nach gibt es keinen Grund sich heutzutage auf Batch zu versteifen und die Möglichkeiten in Powershell nicht zu nutzen. Alles was du brauchst findest du in Powershell mit:
Get-Netadapter | format-list -Property *
Get-Wmiobject Win32_NetworkAdapterConfiguration -Filter "IPEnabled=true"
Gruß
Doskias
Hallo,
Grüße
lcer
Zitat von @Doskias:
Moin,
wieder einmal die Frage zum Anfang: Wieso Batch und nicht Powershell? Meiner Meinung nach gibt es keinen Grund sich heutzutage auf Batch zu versteifen und die Möglichkeiten in Powershell nicht zu nutzen. Alles was du brauchst findest du in Powershell mit:
und dabei geht es auch noch so schick einzeilig. Nimm bitte Powershell.Moin,
wieder einmal die Frage zum Anfang: Wieso Batch und nicht Powershell? Meiner Meinung nach gibt es keinen Grund sich heutzutage auf Batch zu versteifen und die Möglichkeiten in Powershell nicht zu nutzen. Alles was du brauchst findest du in Powershell mit:
Get-Netadapter | format-list -Property *
> Get-Wmiobject Win32_NetworkAdapterConfiguration -Filter "IPEnabled=true"
Grüße
lcer
Hallo,
@icer00 und @Doskias
und wie geht ip a unter Powershell ?
IIRR ist ip a ein unixoides Kommando.... gerht Powershell jetzt auch unter unixoiden Systemen ?
(denke da an Linux, BSD...)
evtl. sucht der TO sowas wie arp ?
Fred
@icer00 und @Doskias
und wie geht ip a unter Powershell ?
IIRR ist ip a ein unixoides Kommando.... gerht Powershell jetzt auch unter unixoiden Systemen ?
(denke da an Linux, BSD...)
evtl. sucht der TO sowas wie arp ?
Fred
Zitat von @em-pie:
Ich gehe davon aus, dass er in einer Unix-Distribution unterwegs ist oder kennt ihr den Befehl ip a unter Windows?
Ich kenn Unix nicht wirklich. Ist schon mehr als 1 Jahrzehnt her, dass ich damit gearbeitet habe. Da es in der Eröffnung nicht explizit erwähnt wurde, bin ich erstmal von Windows ausgegangen, denn das ist weiter verbreitet als Unix. Und da weder Begrüßung noch Verabschiedung steht, bin ich weiter davon ausgegangen, dass dysti99 sich gerne kurz hält und habe ip a als Kurzform für ipconfig /all interpretiert. Jetzt nach deinem Unix Einwurf denke ich aber auch, dass ich mit meiner Interpretation wohl falsch lag Ich gehe davon aus, dass er in einer Unix-Distribution unterwegs ist oder kennt ihr den Befehl ip a unter Windows?
Denn die Powershell wird ihm nicht viel nützen
Aber vielleicht lernt er ja daraus, wie wichtig es ist alle relevanten Infos in einer Frage zu erwähnen. Dann hat es doch was genützt
Moin Fred
So geht PS unter Unix:
https://docs.microsoft.com/de-de/powershell/scripting/install/installing ...
So geht PS unter Unix:
https://docs.microsoft.com/de-de/powershell/scripting/install/installing ...
Ich möchte mit ein Batchscript folgende Ausgabe erreichen:
Du meist wohl ein Bash oder Shell Skript, Windows Batch gibt es unter Linux nicht.for link in $(ip -br a | cut -d " " -f1); do mac=$(ip a show dev $link | grep -Po '(?<=link/ether )[^ ]+');ip=$(ip a show dev $link | grep -Po '(?<=inet )[^ ]+'); printf "%8s\t%15s\t%17s\n" "$link" "$ip" "$mac";done
for link in $(ip -br a | cut -d " " -f1); do mac=$(ip a show dev $link | grep -Po '(?<=link/ether )[^ ]+');ip=$(ip a show dev $link | grep -Po '(?<=inet )[^ ]+'); echo "$link;$ip;$mac";done | column -N INTERFACE,IP,MAC -t -s";"
Hallo,
OK, Powershell war dann nicht nicht so die Lösung.
Der Begriff Batch ( https://de.wikipedia.org/wiki/Stapelverarbeitung ) ist da sicher nicht hilfreich, ich rede bei Linux immer von (Shell)Skript ....
Grüße
lcer
OK, Powershell war dann nicht nicht so die Lösung.
Der Begriff Batch ( https://de.wikipedia.org/wiki/Stapelverarbeitung ) ist da sicher nicht hilfreich, ich rede bei Linux immer von (Shell)Skript ....
Zitat von @147669:
Oder alternativ formatiert mit "column" command
Womit mal wieder die Überlegenheit der Linux-Shell demonstriert werden konnte: Scheller, kürzer, prägnanter geht es nicht > for link in $(ip link | grep -Po '(?<=^\d: )[^:]+'); do mac=$(ip a show dev $link | grep -Po '(?<=link/ether )[^ ]+');ip=$(ip a show dev $link | grep -Po '(?<=inet )[^ ]+'); printf "%8s\t%15s\t%17s\n" "$link" "$ip" "$mac";done
>
> for link in $(ip link | grep -Po '(?<=^\d:) [^:]+'); do mac=$(ip a show dev $link | grep -Po '(?<=link/ether )[^ ]+');ip=$(ip a show dev $link | grep -Po '(?<=inet )[^ ]+'); echo "$link;$ip;$mac";done | column -N INTERFACE,IP,MAC -t -s";"
>
Grüße
lcer
Zitat von @Doskias:
Nun gut, von der Seite hatte ich das noch nicht betrachtet Zitat von @em-pie:
Ich gehe davon aus, dass er in einer Unix-Distribution unterwegs ist oder kennt ihr den Befehl ip a unter Windows?
Ich kenn Unix nicht wirklich. Ist schon mehr als 1 Jahrzehnt her, dass ich damit gearbeitet habe. Da es in der Eröffnung nicht explizit erwähnt wurde, bin ich erstmal von Windows ausgegangen, denn das ist weiter verbreitet als Unix. Und da weder Begrüßung noch Verabschiedung steht, bin ich weiter davon ausgegangen, dass dysti99 sich gerne kurz hält und habe ip a als Kurzform für ipconfig /all interpretiert. Jetzt nach deinem Unix Einwurf denke ich aber auch, dass ich mit meiner Interpretation wohl falsch lag Ich gehe davon aus, dass er in einer Unix-Distribution unterwegs ist oder kennt ihr den Befehl ip a unter Windows?
Denn die Powershell wird ihm nicht viel nützen
Aber vielleicht lernt er ja daraus, wie wichtig es ist alle relevanten Infos in einer Frage zu erwähnen. Dann hat es doch was genützt Wieder etwas gelernt
Zitat von @Doskias:
So geht PS unter Unix:
https://docs.microsoft.com/de-de/powershell/scripting/install/installing ...
Nur zur Info, das Get-Netadapter CMDLet und auch WMI etc. existieren unter Linux nicht .So geht PS unter Unix:
https://docs.microsoft.com/de-de/powershell/scripting/install/installing ...
Zitat von @lcer00:
Womit mal wieder die Überlegenheit der Linux-Shell demonstriert werden konnte: Scheller, kürzer, prägnanter geht es nicht
Kürzer geht immer Womit mal wieder die Überlegenheit der Linux-Shell demonstriert werden konnte: Scheller, kürzer, prägnanter geht es nicht
ip -j a | jq -r '. | [.ifname,(.addr_info | map(select(.family == "inet"))[0].local),.address] | join(";")'| column -N INTERFACE,IP,MAC -t -s";"
Ein gebasteltes Powershell 7 Skript unter Linux:
$HostIP = ip -br addr show
foreach($HI in $HostIP) {
$HostIP = ip -br addr show
foreach($HI in $HostIP) {
- Interfacename
- Status des Interfaces
- Rest muss für IP noch zerlegt werden
- MAC in Zwei Zeilen ermitteln
- Ausgabe für alle aktiven Interfaces ausser Loopback
- Aktuelle MAC erst jetzt ermitteln, da nicht für alle interface so vorhanden
$IP = $Rest.Split("/")[1]
IF ($Interface -ne "lo") {
write-host $Interface, $Istatus, $IP, $MAC
}
}
}
Batch ist weder unixoid noch kleinweichig, sondern universeller. Batchprogrammierung stammt aus der Zeit von Lochkartenstapeln (batch=Stapel) und deren Verarbeitung und heißt im prinzip nichts anderes als eine Abfolge von Kommandos auszuführen. Heutzutage versteht man darunter alle möglichen "Programme" in interpretierten Skriptsprachen , wie z.B. bash, rexx, cmd-shell, csh, etc.
Daher kann mit "batch" alles Mögliche gemeint sein, auch wenn die Kiddies heutzutage nur die CMD-Shell-Skripte verstehen.
Ich persönlich hätte mit einem bash-skript geantwortet, aber die Lösungen sind ja inzwischen gepostet worden.
lks
Das geht dann doch eleganter .
Grüße Uwe
ip -j a | convertfrom-JSON | select IfIndex,@{n='MAC';e={$_.address}},@{n='IP';e={$_.addr_info | ? family -eq 'inet' | select -Expand local}}
Moin Moin,
Ich schaue derzeit in beide Bereiche etwas mehr rein.
Bash weil Ich privat auf Mint umsteige, PS für die Arbeit.
Und ja, so langsam steige Ich durch PS mehr durch. Die Fragezeichen werden weniger :-p
Aber Ich finde immer noch, und immer mehr, das bash logischer strukturiert ist!
Nur meine Meinung
Ich schaue derzeit in beide Bereiche etwas mehr rein.
Bash weil Ich privat auf Mint umsteige, PS für die Arbeit.
Und ja, so langsam steige Ich durch PS mehr durch. Die Fragezeichen werden weniger :-p
Aber Ich finde immer noch, und immer mehr, das bash logischer strukturiert ist!
Nur meine Meinung
Zitat von @TomTomBon:
Aber Ich finde immer noch, und immer mehr, das bash logischer strukturiert ist!
Das Wie Äppel und Birnen vergleichen. Das eine (Bash) ist jahrzehnte gewachsen und besteht aus X unterschiedlichen Tools die man zu einem ganzen zusammenwürfelt. PS dagegen wurde von Grund auf neu auf einem Framework (.NET) aufgebaut und ist mit dem CMDLet-Paradigma eher logischer aufgebaut wo man bei Bash sich eben als Neueinsteiger erst mal die abgekürzten Befehle erst mal zusammensuchen muss, ergeben sich die Befehle bei der PS meist wie von selbst. Dort fragt man sich als erstes was will ich machen? Get-, Set, New- sind meist selbsterklärend, dahinter dann das was man machen will -Content -Process usw.Aber Ich finde immer noch, und immer mehr, das bash logischer strukturiert ist!
Beide Sprachen haben Ihre Berechtigungen, obwohl ich persönlich die PS nur auf der Windows-Seite nutze und unter Linux auch eher die Bash weil man in der PS doch für vieles doch noch wieder althergebrachte Befehle benutzen muss weil einfach noch CMDLets fehlen oder in .NET Core noch nicht umgesetzt wurden.
Just my 2 cent.