
Ich versuche, ein Skript zu erstellen, um alle IP-Adressen der drahtlosen Drucker im Netzwerk abzurufen. Das Problem ist, dass ich nicht sicher bin, wo ich anfangen soll. Ich habe mir CUPS angesehen, aber jedes Dokument oder Tutorial geht nur bis zu einem gewissen Punkt auf die Befehlszeile ein, bevor es zur Verwendung der Weboberfläche übergeht. Es wird nie erwähnt, wie man die IP nur mithilfe der CLI findet. Irgendwelche Ideen?
Antwort1
DemzufolgeFragen- und Antworten-Thread im „Unix & Linux Stack Exchange“Eine Liste der installierten Drucker erhalten Sie nur überlpstat -s
oder mit sudo
( sudo lpstat -s
), um einen vollständigen Gerätepfad zu erhalten. Oder vielleicht mitnmap -A
?
Trotzdem, vielleicht mitarp
mitgrep
Undsed
Mit Pipes () aneinandergereiht |
kann das folgendermaßen funktionieren:
arp -a | grep Printer | awk '{ print $2 }' | sed 's/[()]//g'
Dieser Befehl lässt sich folgendermaßen zusammenfassen:
arp -a
würde Ihnen den gesamten ARP-Verkehr anzeigen.grep Printer
analysiert diearp -a
Ausgabe nach Zeilen, diePrinter
im Namen enthalten sind.awk '{ print $2 }'
greift auf die IP-Adresse zu, allerdings mit Klammern ((
/)
) darum herum.sed 's/[()]//g'
Anschließend wird die IP-Adresse bereinigt, um die Klammern zu entfernen.
Allerdings habe ich keine einfache Möglichkeit, dieses Konzept in meinem lokalen Setup zu testen – da ich nicht einmal einen WLAN-Drucker in meinem Netzwerk habe –, aber ich gehe davon aus, dass es funktionieren wird. Vielleicht grep
sollte das Argument auf „Drucker“ oder vielleicht „Drucken“ angepasst werden; ich weiß es nicht genau. Dies sind hauptsächlich Brainstorming-Ideen, die Ihnen hoffentlich dabei helfen, dieses Problem anzugehen oder Sie zumindest auf den richtigen Weg zu bringen.
Antwort2
Wie wäre es mit lpinfo (CUPS muss installiert sein)
(hier wird Perl verwendet, um den anderen Kram herauszufiltern)
sieheHier
$ sudo lpinfo -l -v | perl -ne 'print if /^Device: uri = socket:/ .. /info/'
Gerät: URI = Socket://192.168.0.3
Klasse = Netzwerk
Info = Officejet J6400-Serie
Gerät: URI = Socket://192.168.0.5:9100
Klasse = Netzwerk
Info = HP Officejet Pro 8610