
Estoy intentando crear un script para obtener todas las direcciones IP de las impresoras inalámbricas en la red. El problema es que no estoy seguro de por dónde empezar. He buscado en CUPS, pero cada documento o tutorial solo llega hasta cierto punto con la línea de comando antes de pasar a usar la interfaz web, nunca mencionan cómo encontrar la IP mediante usando solo la CLI, ¿alguna idea?
Respuesta1
De acuerdo a estoHilo de preguntas y respuestas sobre “Unix & Linux Stack Exchange”sólo puede obtener una lista de impresoras instaladas a través delpstat -s
o usarlo con sudo
( sudo lpstat -s
) para obtener una ruta completa del dispositivo. O tal vez usandonmap -A
?
Dicho todo esto, tal vez usandoarp
congrep
ysed
encadenados con tuberías ( |
) pueden funcionar así:
arp -a | grep Printer | awk '{ print $2 }' | sed 's/[()]//g'
Ese comando se descompone así:
arp -a
le mostraría todo el tráfico de arp.grep Printer
analizará laarp -a
salida en busca de líneas que tenganPrinter
el nombre.awk '{ print $2 }'
toma la dirección IP, pero entre paréntesis ((
/)
) alrededor.sed 's/[()]//g'
luego limpia la dirección IP para eliminar los paréntesis.
Dicho esto, no tengo una manera fácil de probar este concepto en mi configuración local, ya que ni siquiera tengo una impresora Wi-Fi en mi red, pero supongo que funcionará. Quizás el grep
argumento debería ajustarse a “impresoras” o quizás “imprimir”; No lo sé con seguridad. Se trata principalmente de una lluvia de ideas que, con suerte, le ayudarán a abordar este problema o al menos a orientarle en el camino correcto.
Respuesta2
¿Qué tal lpinfo (necesita instalar CUPS)
(usando Perl aquí para filtrar las otras cosas)
?aquí
$ sudo lpinfo -l -v | perl -ne 'print if /^Device: uri = socket:/ .. /info/'
Dispositivo: uri = socket://192.168.0.3
clase =
información de red = Officejet J6400 series
Dispositivo: uri = socket://192.168.0.5:9100
clase =
información de red = HP Officejet Pro 8610