Wie erhalte ich Drucker-IP-Adressen über die Befehlszeile in Linux?

Wie erhalte ich Drucker-IP-Adressen über die Befehlszeile in Linux?

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 -soder mit sudo( sudo lpstat -s), um einen vollständigen Gerätepfad zu erhalten. Oder vielleicht mitnmap -A?

Trotzdem, vielleicht mitarpmitgrepUndsedMit 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 -awürde Ihnen den gesamten ARP-Verkehr anzeigen.
  • grep Printeranalysiert die arp -aAusgabe nach Zeilen, die Printerim 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 grepsollte 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

verwandte Informationen