Bonne après-midi! Je partagerai avec vous une expérience intéressante dans la création d'un outil mobile pour travailler avec le réseau.
Avant-propos
J'ai travaillé pendant plusieurs années dans des prestataires, du petit au fédéral. Quand je suis arrivé au fédéral, j'ai été confronté à beaucoup de routine et il y avait un désir d'automatiser ce processus très routinier.
année 2013. J'ai un ami qui a également travaillé dans l'un des "fédéraux", connectant des clients et il y a eu une histoire quand il m'a donné un téléphone et est monté dans le grenier pour faire quelque chose avec l'interrupteur. J'étais debout en dessous avec un téléphone sur lequel une page Web a été ouverte avec divers scripts intéressants. Ces scripts ont effectué la vérification du port sur le commutateur, la suppression des erreurs et d'autres choses.
Autrement dit, l'ingénieur, venu à l'adresse, n'a pas dérangé l'administrateur pour des absurdités, car lui-même disposait d'un outil pour travailler avec le réseau.
Nous sommes en juin 2018 et j'étais tourmenté par l'idée que "Pourquoi ne pas écrire un robot qui vérifierait des équipements de différents niveaux (noyau, agrégation, accès)? Le problème était que je voulais seulement me débarrasser de la routine, le reste vivait pour aujourd'hui.
Choisir un langage de programmation et une plateforme
Les gars, bien sûr Python . Au moment des idées, j'avais déjà quelques compétences et un peu d'expérience en scénarisation. La plate-forme a été choisie comme conviviale - Telegram parce que tous les IT-schnicks y vivent.
Choisir des bibliothèques pour écrire un bot
1. Bibliothèque pour travailler avec Telegram. pyTelegramBotAPI disparaissait, en particulier pendant la période de blocage, je voulais rapidement me faire des amis avec des proxys et d'autres choses. J'ai choisi python-telegram-bot et j'ai pris la conversation comme base .
2. Bibliothèque pour travailler avec l'équipement. En raison de la simplicité du travail, mon choix s'est porté sur - python3-netsnmp .
Les fondations sont posées, il est temps d'écrire.
A conduit
Le réseau était un zoo de fer et nous avons dû prendre un fournisseur séparé et travailler avec lui. Une autre condition importante était la présence de MIB pour l'exécution des tâches.
Une des tâches consistait à vérifier la longueur des câbles et l'état des paires, vérifier l'état des ports et la présence d'erreurs sur les ports.
Maintenant, beaucoup écriront un dicton - "Eh bien, que ne pourrait-on pas faire sans SNMP?" Ma réponse est que - "Oui, vous ne pouvez pas, si vous voulez capturer des données d'une manière humaine normale - alors seulement SNMP."
Maintenant, quelqu'un brûle déjà un endroit et il n'écrit que NETCONF.
Après avoir passé l'équipement d'accès et mis en œuvre le travail avec lui dans le bot, j'ai été confronté au fait que parfois, en effet, pour des tâches spécifiques, que le protocole SNMP ne résout pas, je dois me rendre à l'équipement.
La bibliothèque netmiko est venue à mon secours- et je suis toujours content d'elle. Elle a résolu beaucoup de problèmes même pas liés au bot. La quantité d'équipement pris en charge n'est que du feu.
J'ai également trouvé la bibliothèque ipaddress très utile pour vérifier les adresses IP. En
général, lors de la programmation, j'ai pris en compte beaucoup de nuances, de l'autorisation d'un utilisateur dans un bot à lui donner divers droits.
La fonctionnalité s'est développée
Oui, la fonctionnalité s'est développée et, avec elle, la prise en charge de certains équipements s'est développée. J'ai ajouté des équipements d'accès radio, des récepteurs KTV optiques.
D'une manière ou d'une autre, des gens sont venus me voir et m'ont dit que nous allions mettre des interphones. Je comprends avec ma tête que le décor tombera également sur mes épaules et les épaules de collègues.
J'ai commencé à ressentir, regarder. J'ai lu l'API, ce qui était bien là-bas. J'ai choisi la bibliothèque la plus simple pour travailler avec HTTP et HTTPS - demandes .
Ayant déjà travaillé avec des interphones, il y avait des besoins pour une base de données, mais comme d'habitude l'opéra paresseux * ne voulait pas trop se fatiguer. Par conséquent, le choix s'est porté sur sqlite3. La bibliothèque a également été choisie aussi simple que possible - c'est un jeu de données .
Les nuages se rassemblent,
à un moment donné, le travail est devenu insensé et mon idée, en fait, a vécu toute seule. Il y a beaucoup de travail, peu d'argent - eh bien, je pense que vous prenez la note. J'ai décidé de quitter cet établissement. Ayant travaillé pendant plusieurs années au gouvernement fédéral, j'ai amélioré mes compétences en travaillant avec un langage de programmation. J'étais très content de cela.
Épilogue
C'est peut-être une grande histoire, ou pas vraiment une histoire qui s'est terminée. Un networker, à mon avis, sans programmation nulle part, surtout avec un zoo de fer. En conséquence, le parc d'équipements pris en charge était le suivant:
- 23 modèles de commutateurs d'accès
- 3 modèles de récepteurs KTV optiques
- 4 modèles de commutateurs de châssis
- 1 modèle de routeur de châssis
- 3 modèles d'équipement d'accès radio