През портовете на оборудването към потребителските машини

Добър ден, Khabrazhiteli.

Тази публикация ви разказва как с помощта на PowerShell отново успяхме да направим живота си малко по-лесен и да автоматизираме търсенето на оборудване и портове, на които се намират компютрите на потребителите. Това е необходимо в момента, когато трябва да препратите vlans (добре, или просто за информация).

портовете
"

заден план

Всичко започна преди около година. Един ден нашият старши администратор ми предложи да опитам да напиша скрипт по тази тема. След като надрасках тиквата, се съгласих да опитам. Преди това никога не бях работил с мрежово оборудване (е, домашен рутер не се брои), така че той ми хвърли приблизителна последователност от команди, с които може да се направи всичко това.

Използвайки Putty, се опитах да направя всичко това ръчно, всичко се получи и започнах да мисля как да автоматизирам всичко това. Да, не просто автоматизирайте, но го направете с PowerShell. Защо PoSH? По това време наистина се влюбих в него (въпреки че все още не се отървах от него), беше възможно да го направя в нещо друго, но наистина исках да го направя чрез PoSh.

Тъй като беше необходимо да се свържете с оборудването чрез Telnet и SSH (главно чрез Telnet, тъй като SSH не беше навсякъде по това време, но повече за това по-късно), прекарах много време в Интернет, за да разбера как PowerShell може да работи с тези протоколи. След това се обърнах към 2 механизма за свързване:

  1. използвайки plink.exe (от Putty)
  2. Netcmdlets от /n софтуер
Използвайки основно plink.exe, получих нещо, което трудно може да се нарече произведение на изкуството. Това беше огромен, претрупан сценарий, който абсолютно никой не искаше да покаже. И още повече, че напишете статия за това тук. И тъй като проработи(периодично, дори го използвах), оставих оптимизацията му на заден план и се заех с други неща.

Мина време, през това време много се промени, но аз не забравих за това мое въображение, като периодично правя опити да го пренапиша отново и да се отърва от куп ненужни неща. Най-после успях!

Вейдър, стани!

Най-важното нещо, което се случи, беше, че фърмуерът на комутаторите беше актуализиран и сега стана възможно да се свържете с тях чрез SSH. Е, страхотно, тогава вкарваме в telnet. Това беше последвано от още 1 промяна: тъй като telnet вече не е необходим, можем да спрем да използваме plink.exe (от Putty) и NetCmdlets получава цялата слава. След много разговори с техническата поддръжка на тази компания най-накрая разбрах как работят тези инструменти и започнах да работя.

NetCmdlets

Тъй като искам да благодаря на хората, които ги направиха, малко отклонение и няколко думи за тези кратки команди: Можете да прочетете за тях и да ги изтеглите тук. Можете да изтеглите както пробната версия (за 30 дни), така и пълната версия (за $100 на компютър). Използвах пробната версия, т.к. след изтичане на срока на годност можете просто да го преинсталирате. Наскоро powershellmagazine.com раздаде безплатно тези командлети, успях да ги взема. Така че бъдете нащрек! Но да се върнем към нашите овце. След като избрах набор от тези командлети, започнах да ги изучавам. Този комплект е доста голям, така че няма да описвам всичко, което има. спрете на 2:

  • Свържи-СШ
  • Извикване-SSh
Може да се откаже само от Invoke-SSh, но тогава няма да имате постоянна сесия с устройството (т.е. да речем, вече няма да е възможно да изпълнявате команди в "conf t" на устройството). Следователно ние използваме кратката команда Connect-SSh, за да създадем връзка с устройството и изпълняваме команди с помощта на кратката команда Invoke-SSh. всичкодостатъчно просто. Важен момент е, че тези командлети могат да работят заедно с командата Get-Credential, в която можете да напишете идентификационни данни за свързване към оборудване (ще видите примери в скрипта), т.е. идентификационните данни не се съхраняват в обикновен текст в скрипта (както имах с plink.exe). Не съм параноик, но обичам да играя на сигурно.

Анализ на изхода и регулярни изрази

Очаквах много романтичен анализ на изхода на обвивката на Cisco iOS, тъй като cmdlet Invoke-SSH показва изхода в колоната Text, т.е. като предаваме изхода на променливата, получаваме голям текст. Тук регулярните изрази идват на помощ. Но тези, които анализираха големи текстове, знаят, че не е лесно да се получи необходимия фрагмент оттам, но благодарение на PowerShell излязохме от тази ситуация с блясък. Засега прочетете PowerShell в действие 2-ро издание. За всеки, който изучава PoSh, силно препоръчвам тази книга. И в него прочетох за нещо като named regexp. Основното е, че с PowerShell той съдържа променливата $Mathces, в която се въвеждат всички съвпадения при използване на регулярни изрази:

Но това не е всичко! Хубавото е, че ако добавим , можем да имаме директен достъп до резултатите от мачовете и да заобиколим анализирането с такова прекрасно нещо (разделена камина!). Не знам за вас, но за мен това беше откритие (например в българските ресурси на PowerShell няма нищо за това), при което бях готова да изкрещя като ученичка. Чудя се дали други езици имат това?

Самият сценарий

Всъщност самият сценарий.

Hardcore conf в C++. Каним само професионалисти.