
Estou tentando criar um script para obter todos os endereços IP das impressoras sem fio da rede. O problema é que não sei por onde começar, olhei para o CUPS, mas cada documento ou tutorial só vai até certo ponto com a linha de comando antes de passar a usar a interface da web, eles nunca mencionam como encontrar o IP por usando apenas a CLI, alguma ideia?
Responder1
De acordo com issotópico de perguntas e respostas no “Unix & Linux Stack Exchange”você só pode obter uma lista de impressoras instaladas vialpstat -s
ou usá-lo com sudo
( sudo lpstat -s
) para obter o caminho completo do dispositivo. Ou talvez usandonmap -A
?
Tudo isso dito, talvez usandoarp
comgrep
esed
encadeados com pipes ( |
) podem funcionar assim:
arp -a | grep Printer | awk '{ print $2 }' | sed 's/[()]//g'
Esse comando se divide assim:
arp -a
mostraria todo o tráfego arp.grep Printer
analisará aarp -a
saída em busca de linhas que contenhamPrinter
o nome.awk '{ print $2 }'
pega o endereço IP, mas com parênteses ((
/)
) ao redor deles.sed 's/[()]//g'
em seguida, limpa o endereço IP para remover os parênteses.
Dito isso, não tenho uma maneira fácil de testar esse conceito em minha configuração local – já que não tenho nem uma impressora Wi-Fi em minha rede – mas presumo que funcionará. Talvez o grep
argumento devesse ser ajustado para “impressoras” ou talvez “impressão”; Eu não tenho certeza. Estas são principalmente ideias de brainstorming que, esperamos, irão ajudá-lo a resolver esse problema ou, pelo menos, colocá-lo no caminho certo.
Responder2
Que tal lpinfo (precisa do CUPS instalado)
(usando Perl aqui para filtrar as outras coisas)
vejaaqui
$ sudo lpinfo -l -v | perl -ne 'print if /^Device: uri = socket:/ .. /info/'
Dispositivo: uri = soquete://192.168.0.3
classe =
informações de rede = Officejet série J6400
Dispositivo: uri = soquete://192.168.0.5:9100
classe =
informações de rede = HP Officejet Pro 8610