SuperPuTTY i importowanie urządzeń z pliku CSV

W pracy administratora codziennością jest łączenie się z urządzeniami poprzez telnet bądź SSH. Jeżeli zarządzacie urządzeniami sieciowymi, to jest to wręcz niezbędne. Można do tego używać wbudowanego w system telnetowego klienta, od biedy wystarczy. Jeżeli liczymy na coś więcej to godny polecenia jest bardzo popularny PuTTY. Wystarcza on jeżeli okazjonalnie łączymy się z naszymi maszynami. Jeżeli natomiast urządzeń mamy mnóstwo i łączymy się z nimi często, warto zaopatrzyć się w coś o większej mocy.

Programem, który świetnie nadaje się do zarządzania i obsługi wielu połączeń jest SuperPuTTY. Można powiedzieć, że jest godnym następcą Putty Connection Manager, który już od dość dawna nie jest wspierany i rozwijany. Z wielu cech warto wymienić obsługę wielu protokołów i interfejs umożliwiający personalizację jednak tym co według mnie jest najbardziej użyteczne to możliwość utworzenia bazy urządzeń, aby następnie łączyć się z nimi po kliknięciu. To jest właśnie to co najbardziej przyspiesza pracę i niweluje czas potrzebny na szukanie i wpisywania odpowiedniego IP. Twórcy SuperPuTTY zapomnieli jednak o jednej ważnej rzeczy – nie możemy importować wpisów z pliku innego niż specjalnie sformatowany XML. Nie jest to problem gdy mamy kilka czy nawet kilkadziesiąt urządzeń, gdy jednak jest ich powyżej setki robi się z tego niezłe przedsięwzięcie. Stanąłem właśnie niedawno przed takim problemem, a że promuję model administrowania oparty na „lenistwie”, wcale nie zamierzałem robić tego ręcznie. Zresztą nawet gdybym chciał to zrobić ręcznie zajęło by to około 21 godzin nieprzerwanej pracy. Nadszedł czas skryptowania. Wytworzenie finalnego „produktu” zajęło zdecydowanie mniej czasu niż ręczne wyklepywanie. Dodatkowo rozwiązuje sprawę aktualizacji bazy – wystarczy po prostu ponownie uruchomić skrypt.

Oryginalny program napisany był tak aby przekonwertować plik CSV wyeksportowany z CiscoWorks LAN Management Solution. Dodatkowo nazwy urządzeń były tworzone według schematu, więc dzięki temu mogłem pogrupować je według lokalizacji i funkcji. Poniższy skrypt został nieco okrojony, żeby był bardziej uniwersalny, nic nie stoi jednak na przeszkodzie żeby dopisać kilka dodatkowych linii.

AllLMSDevicesFile="Alldevices.csv"
SuperPuTTYDB="SuperPuTTY_import.xml"
'===========

Const ForReading = 1
Const ForWriting = 2
Const ForAppending = 8
Set objFSO = CreateObject("Scripting.FileSystemObject")

'************************
'* MAIN CODE
'************************

'Sprawdzanie pliku wejsciowego
if objFSO.FileExists(AllLMSDevicesFile) Then
     Set objAllLMSDevicesFile = objFSO.OpenTextFile(AllLMSDevicesFile, ForReading)     
Else
     MsgBox "Input file doesn't exist"
     WScript.Quit
End If

'przygotowanie pliku wyjsciowego
objFSO.CreateTextFile(SuperPuTTYDB)
Set objSuperPuTTYDB = objFSO.OpenTextFile(SuperPuTTYDB, ForWriting)
objSuperPuTTYDB.WriteLine "<?xml version=""1.0"" encoding=""utf-8""?>"
objSuperPuTTYDB.WriteLine "<ArrayOfSessionData xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"">"

'Main Loop
Do Until objAllLMSDevicesFile.AtEndOfStream
     arrDevice=""
     strDeviceName=""
     strDeviceIP=""
     strDevicePort=""
     strDeviceType=""

     strLine = objAllLMSDevicesFile.Readline
     If strLine <> "" Then
         'wyciąganie danych z pliku CSV
         arrDevice = Split(strLine , ",")
         strDeviceName=arrDevice(0)
         strDeviceIP=arrDevice(1)
         strDevicePort=arrDevice(2)
         strDeviceType=arrDevice(3)

         objSuperPuTTYDB.WriteLine("<SessionData SessionId=""" & strDeviceType & "/" & strDeviceName & " (" & strDeviceIP & ")" & """ SessionName=""" & strDeviceName & " (" & strDeviceIP & ")" & """ ImageKey=""computer"" Host=""" & strDeviceIP & """ Port=""" & strDevicePort & """ Proto=""" & strProtocol & """ PuttySession=""Default Settings"" Username="""" ExtraArgs="""" />")
     End If
Loop

objSuperPuTTYDB.WriteLine "</ArrayOfSessionData>"

A jakich programów Wy używacie do łączenia się z urządzeniami?

Przeczytaj także...

2 komentarze

  1. X napisał(a):

    WinSCP

  2. X napisał(a):

    Czy istnieje jakaś możliwość aby po połączeniu z routerem można było otworzyć np plik dhcp w jakimś edytorze tekstu? Aby wygodnie sobie dopisać nowy adres?

Dodaj komentarz