Hintergrund
Ich arbeite täglich mit Putty und habe rund 30 Maschinen auf denen ich regelmäßig arbeiten muss. Wie organisiert man das am besten? Ich arbeite seit einigen Jahren nun wie folgt:
Ich nutze Putty direkt um die Sessions zu verwalten (was meiner Meinung nach nicht optimal ist, aber besser als jede Drittsoftware die ich ausprobiert habe).
Daher habe ich meine Putty-Standard-Einstellungen nun so für mich optimiert, dass jede neue Session wirklich nur noch einen Namen und eine IP braucht.
Nun habe ich das Problem, Jumplist mit 30 Rechnern ist unkuhl. Wie soll ich das besser hinkriegen? Ordner an Taskleiste heften und in diesen Ordner PuttyShortcuts einfügen. Die Lösung ist für mich perfekt .. aber wenn man nun mal an den Sessions etwas ändert wie den Namen oder Sessions hinzukommen, habe ich diese genauso fleißig nachgearbeitet wie Programmierer das mit Kommentare tun ...
Nun hab ich mich 10 Minuten hingesetzt und eine Quick&Dirty Lösung dafür gebastelt.
Aufgabe: Vorhandene Puttysessions aus der Registry auslesen und entsprechende Verknüpfungen zu jeder Session erstellen
Parameter 1: Putty-Installationsverzeichnis
Parameter 2: Ausgabeverzeichnis für die Shortcuts
Gelesen wird aus der Registry die ersten 100 Sessions (Das geht sicherlich schöner, aber wie erwähnt, Qick&Dirty und jeder der lesen kann kann sich den Schleifenzähler erhöhen )
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Add_Constants=n
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#Region ;************ Includes ************
#Include <StringConstants.au3>
#Include <MsgBoxConstants.au3>
#EndRegion ;************ Includes ************
Local $APPNAME = "PuttyShortcuts"
Local $AUTHOR = "Mike Wenzel"
Local $VERSION = "0.1"
Local $BUILD = "001"
; Changelog: - Build 001 2016-09-22 - Creation
Local $sDirPutty = ""
Local $sDirShortcuts = ""
Local $sRegKey = ""
Local $sSession = ""
Local $sLink = ""
If $CmdLine[0] <> 2 Then
MsgBox(32, $APPNAME, "Name: " & $APPNAME & @CRLF & _
"Author: " & $AUTHOR & @CRLF & _
"Version: " & $VERSION & @CRLF & _
"Build: " & $BUILD & @CRLF & _
@CRLF & _
"PuttyShortcuts.exe <Putty_Install_Dir> <PuttyShortcuts_Dest_Dir>" & @CRLF & _
"Example:" & @CRLF & _
"PuttyShortcuts.exe 'C:\Program Files (x86)\Putty\putty.exe' 'D:\PuttyShortcuts'")
Exit 1
Else
$sDirPutty = $CmdLine[1]
If Not FileExists($sDirPutty) Then
MsgBox(64, $APPNAME, "PuttyShortcuts.exe <Putty_Install_Dir> <PuttyShortcuts_Dest_Dir>" & @CRLF & _
"Example:" & @CRLF & _
"PuttyShortcuts.exe 'C:\Program Files (x86)\Putty\putty.exe' 'D:\PuttyShortcuts'" & @CRLF & _
@CRLF & _
"<Putty_Install_Dir> '" & $sDirPutty & "' does not exist!")
Exit 2
EndIf
$sDirShortcuts = $CmdLine[2]
If Not FileExists($sDirShortcuts) Then
MsgBox(64, $APPNAME, "PuttyShortcuts.exe <Putty_Install_Dir> <PuttyShortcuts_Dest_Dir>" & @CRLF & _
"Example:" & @CRLF & _
"PuttyShortcuts.exe 'C:\Program Files (x86)\Putty\putty.exe' 'D:\PuttyShortcuts'" & @CRLF & _
@CRLF & _
"<PuttyShortcuts_Dest_Dir> '" & $sDirShortcuts & "' does not exist!")
Exit 3
EndIf
EndIf
For $i = 1 To 100
$sRegKey = RegEnumKey("HKEY_CURRENT_USER\SOFTWARE\SimonTatham\PuTTY\Sessions\", $i)
If @error Then ExitLoop
$sSession = StringRegExpReplace($sRegKey, "%20", " ")
$sSession = '"' & $sSession & '"'
$sLink = StringRegExpReplace($sRegKey, "%20", "_")
FileCreateShortcut("C:\Program Files (x86)\Putty\putty.exe", $sDirShortcuts & "\" & $sLink & ".lnk", "C:\Program Files (x86)\Putty", "-load " & $sSession)
$sRegKey = ""
$sSession = ""
$sLink = ""
Next
Exit 0
Alles anzeigen