Esta resposta responde diretamente à sua primeira pergunta. Para a segunda pergunta, entender o comando permitirá que você também coloque endereços IP da impressora em um arquivo. Então aqui vamos nós:
nmap -p 515,631,9100 -oG - 10.81.129.0/24 | gawk '/open/{print $2}' | xargs --delimiter='\n' nmap -sU -p 161 -oG - | gawk '/open/{print $2}' | xargs --replace=$ipaddress snmpget -v 1 -O v -c public $ipaddress system.sysDescr.0 | sed 's/STRING:\s//'
Descrição do processo
- Verifica uma rede procurando entidades de rede que estão ouvindo nas portas de impressora padrão.
- Usando os resultados da etapa anterior, ele verificará o suporte a SNMP nesses dispositivos.
- Para cada dispositivo que tem suporte a SNMP, ele consulta a entidade de rede em busca de uma descrição do dispositivo.
Divisão de comandos
nmap - Digitalização em rede. ( Nmap.org )
-
-p 515,631,9100
Varredura para a porta TCP 515, 631 e 9100.
-
-oG -
Use o formato de saída do grep.
-
-sU -p 161
Varredura para a porta UDP 161.
gawk ou awk - Processa dados de texto orientados por colunas. Por padrão, os espaços em branco separam a linha em colunas. ( Wikipedia )
-
gawk '/regexp/'
Use a expressão regular com o gawk para filtrar as linhas que correspondem a essa expressão regular.
-
gawk '{<code>}'
Use o idioma de entrada awk C-like para manipular a saída.
-
gawk '{/open/print $2}'
Procure por linhas que correspondam a "abrir" e imprima a segunda coluna.
xarg - Construa e execute comandos a partir de uma determinada entrada. Por padrão whitespaces separa a linha em argumentos. ( Wikipedia )
-
--delimiter='\n'
Separe os argumentos por nova linha (\ n) em vez de espaço em branco.
-
--replace=$ipaddress
Para cada linha, armazene o argumento em $ ipaddress .
snmpget ou snmpwalk - Use a solicitação SNMP GET para consultar informações sobre uma entidade de rede. (net-snmp.org , mais sobre o SNMP em Wikipedia )
-
-c public
Defina a sequência da comunidade como pública.
-
-v 1
Configure a versão do SNMP como 1.
-
-O v
Não imprima OID.
-
system.sysDescr.0
Variável para consulta. Descrição desta variável específica: "Uma descrição textual da entidade. Esse valor deve incluir o nome completo e a identificação da versão do tipo de hardware do sistema, do sistema operacional e do software de rede. É obrigatório que ele contenha apenas Caracteres ASCII. "
sed - Analisa e transforma o texto. ( Wikipedia )
-
's/day/night/'
Encontre a primeira ocorrência do dia da string em uma linha e substitua-a por noite.
-
's/STRING:\s//'
Encontre STRING: \ s e substitua por nada. Isso remove STRING: \ s da entrada. \ s representa um espaço em branco.
Existem alguns comandos suportados pelo UNIX envolvidos. Pessoalmente, eu fiz essa cadeia funcionar em uma máquina Windows usando o Cygwin para obter esses comandos.