Ouvrir une session SSH Putty depuis un classeur Excel
Dans le cadre de mon activité professionnelle, je suis amené à me
connecter sur différentes machines de type Unix et GNU/Linux,
l’authentification sur ces machines se faisant avec les clefs SSH.
Comme mon poste de travail fonctionne (marchotte) avec Windows XP,
j’utilise Putty pour ouvrir les sessions SSH.
Pour certaines machines, j’ai mémorisé la configuration d’accès dans Putty et j’utilise un raccourci depuis le menu Démarrer pour y accéder. Pour d’autres qui sont nombreuses, je gère la liste des stations (hostname, adresse IP, …) dans un classeur. Pour ouvrir une session sur l’une de ces machines, je dois : ouvrir le classeur, copier l’adresse IP, ouvrir Putty et coller l’adresse afin d’ouvrir une session sur cette station.
Pour me faciliter la vie, j’ai rassemblé ces opérations dans une macro pour Excel 2000 qui est la version de mon poste XP.
Putty et ses données
Le logiciel Putty est disponible en téléchargement depuis cette page, il existe aussi une version portable sur le site de Framakey.
Si vous installez Putty sur votre poste XP, les données de configuration
des sessions sont enregistrées dans la base de registre. Pour
sauvegarder ces informations, il faut exporter la branche
HKEY_CURRENT_USER\Software\Simon Tatham
depuis l’éditeur de
registre (regedit).
Il est conseillé de faire une sauvegarde régulière de cette partie de la base de registre et d’en faire un backup sur une autre machine, cela évitera de tout refaire en cas de crash du poste !
Créer un raccourcis vers une session Putty
Pour créer un raccourci vers un profil qui a été enregistré dans la base de registre, on utilise la syntaxe
"C:\Program Files\Putty\putty.exe" -load "<nom de la session enregistrée>"
Ouvrir une session en mode commande
Depuis une invite de commande (MS-DOS), il est possible d’ouvrir une session sur une machine distante avec la syntaxe suivante :
"C:\Program Files\Putty\putty.exe <adresse IP de la station>
Si on veut ouvrir une session sous un compte particulier, il faut utiliser la syntaxe :
"C:\Program Files\Putty\putty.exe <login>@<adresse IP de la station>
On peut utiliser la même syntaxe pour les transferts sécurisés avec
l’outil sftp, les commandes deviennent alors psft <adresse IP de la
station>
ou psft <login>@<adresse IP de la station>
.
Ouvrir une session SSH depuis Excel
Comme l’entreprise ou je travaille est dépensière, en plus d’utiliser
Windows XP, elle utilise également la suite Office. Comme un malheur
n’arrive jamais seul, elle utilise 3 versions différentes (2000, 2003 et
2007) suivant l’age du poste ou le pays d’appartenance. Il y a donc des
problèmes de compatibilité des formats des documents suivant leurs
origines.
Ayant un poste ancien, je dispose de la version Office 2000.
Pour gérer mes stations, j’ai créé une feuille de calcul qui contient plusieurs types d’informations, il y a en a 2 qui sont importantes :
- le nom de la machine qui est dans une colone nommée hostname
- l’adresse IP de la machine qui est dans une colonne nommée AddIp
Le principe retenu est de sélectionner un nom de machine ou une adresse IP et de lancer la macro, celle ci vérifiera que :
- si la cellule sélectionnée est un hostname, alors on sélectionne l’adresse IP correspondante
- la cellule sélectionnée est bien dans la colonne AddIp, sinon il faut sortir de l’application
- la cellule n’est pas vide, sinon il faut sortir de l’application
Si tous les contrôles sont Ok, alors on lance l’application Putty avec en paramètre l’adresse IP de la station.
La macro que vous pouvez ré-utiliser :
Sub Ouvre_SSH()
'Ouvre une session Putty/SSH sur l'adresse IP sélectionnée
Dim Commande As String
'Chemin d'accès à Putty, il doit être installé !
Commande = "C:\Progra~1\Putty\putty.exe "
' La sélection fait elle partie de la colonne des hostnames ?
If ActiveCell.Column = Range("hostname").Column Then
'On sélectione la colonne des adresses IP
Cells(ActiveCell.Row, Range("AddIp").Column).Activate
End If
' La sélection fait elle partie de la colonne des adresses IP ?
If ActiveCell.Column <> Range("AddIp").Column Then
MsgBox "La cellule sélectionnée n'est pas une adresse IP ou un hostname.", 16
Exit Sub
End If
' Il ne faut pas sélectionner le titre de colonne
If ActiveCell.Row = 1 Then
MsgBox "Vous avez sélectionné le titre de colonne," & Chr(13) & "vous devez choisir l'adresse IP ou le Hostname.", 16
Exit Sub
End If
' La cellule ne doit pas être vide
If ActiveCell.Value = "" Then
MsgBox "L'adresse IP n'existe pas.", 16
Exit Sub
End If
Commande = Commande & ActiveCell.Value
Shell Commande, vbNormalFocus
End Sub