Tendo apenas acesso ssh, determine se o dispositivo é roteador ou switch (Cisco e Juniper)

3

Existem alguns dispositivos Cisco e Juniper em nossa rede que eu preciso criar um script python para determinar o que são: comutadores ou roteadores.

Eu tenho acesso ssh, para que eu possa show versionanalisar 'JUNOS' ou 'Cisco' para descobrir o fornecedor. Mas não sei como descobrir se o dispositivo é um roteador, switch ou outra coisa.

Obrigado pela ajuda!

pr1va
fonte
3
Acho que você não deve enfrentar esse problema se tiver um nome significativo de cada dispositivo.
Khaled 02/01
Eu gostaria que nmap -Ofosse mais preciso. A execução em um firewall da Cisco fornece: "Tipo de dispositivo: firewall - Em execução (APENAS SUGESTÃO): Juniper incorporado (88%), Cisco PIX OS 7.X (87%)".
ewwhite

Respostas:

3

Pode ser difícil dizer, porque muitos modelos comercializados como comutadores terão funções de roteamento incluídas, e você também pode ter casos em que os roteadores estão sendo usados ​​como comutadores - ou seja, eles não estão direcionando o tráfego. Portanto, mesmo que você possa descobrir a capacidade de um dispositivo, você realmente deseja conhecer sua função na sua rede.

Você pode ter muitos dispositivos, mas provavelmente não possui tantos modelos diferentes; portanto, analisar manualmente a saída show versionpode ser suficiente para descobrir o que seus dispositivos podem fazer.

A menos que você esteja apenas tentando preencher um banco de dados de ativos, precisará analisar as configurações e descobrir o que cada dispositivo está realmente configurado para fazer.

dunxd
fonte
Você está certo, a função pode ser diferente da finalidade original do dispositivo. Infelizmente, é um banco de dados de ativos que estamos preenchendo e recebo mais de 1200 partidas da Cisco e 500+ Juniper por aí. Lendo mais, descobri que todos os Juniper Switches são da série EX, o que pode ser útil para a análise.
pr1va
Apenas por interesse, quantos resultados exclusivos você obtém para esses 1700 dispositivos. Eu ficaria tentado a argumentar apenas por uma categoria de Dispositivo de rede no banco de dados de ativos se o número de modelos for muito alto ... É claro que eles pedirão o valor e a data da compra para cada um cuja programação pode não ser ajudá-lo com.
dunxd
Essas são correspondências, não dispositivos. Alguns hosts recebem até 15 partidas, 5 delas podem ser da Cisco, 5 Juniper e 5 diversas.
pr1va
Desculpe, esqueci de mencionar que estou lidando com uma saída do nmap aqui.
pr1va
1

Em um dispositivo Cisco, é possível analisar os recursos do dispositivo usando o CDP (consulte Em um dispositivo Cisco, como você mostra os recursos? ). No entanto, o CDP pode estar desativado na sua rede.

O melhor seria verificar se as interfaces Vlan estão presentes (significa um dispositivo com capacidade de comutação) e se existem interfaces do tipo FastEthernet X / X / X (provavelmente um roteador com capacidade de comutação).

Ao usar esses dois fatos, você obtém uma idéia bastante precisa do que é o dispositivo, mas é específico da Cisco.

Você também pode usar a referência do navegador de recursos / Juniper da Cisco para construir uma detecção usando o nome do modelo (se você souber quais dispositivos você tem em sua rede, na maioria das vezes você tem uma quantidade limitada de modelos), que será mais precisa, mas específico para sua rede.

A vantagem é que desta vez é genérico e não específico para uma marca e não há risco de detecção incorreta.

Como alternativa, convém usar um CMDB ou um software de inventário para preparar essas informações para uso posterior. Basta consultar o banco de dados para verificar se é um comutador ou um roteador.

Matthieu Cerda
fonte
0

Existem várias maneiras de fazer isso.

Minha primeira opção seria o SNMP, mesmo se você tiver que tentar várias strings. As chamadas são mais rápidas e menos vulneráveis ​​a diferenças na versão do código. Você pode baixar uma cópia gratuita dos ventos solares e terminar em menos de uma hora. Também é muito mais fácil criar scripts de interação SNMP do que ssh / cli.

Em seguida, eu usaria algum tipo de wrapper esperado. Sou parcial com o material perl porque é mais estável e mais bem documentado. Você também pode escrever um script de expectativa e chamá-lo de python.

show version é o comando óbvio, mas pode ser diferente entre os dispositivos. Você tem uma lista das plataformas possíveis? Você pode usar expressões regulares para classificar a partir de uma lista de distribuição e, em seguida, colocar todo o resto em uma pilha desconhecida. Conforme você classifica as incógnitas, atualize seu script para encontrá-las automaticamente.

keegan2149
fonte