web-dev-qa-db-fra.com

Créer un fichier de commandes ou un raccourci vers PuTTY (ssh) qui ouvre une session et exécute une commande

Je me trouve souvent en train d'ouvrir une session SSH pour exécuter la même commande unique. J'ai tout configuré pour me connecter sans entrer de mot de passe (via SSH Key-Based Auth). Je me suis donc demandé s'il existait un moyen de créer un raccourci ou un fichier de commandes dans Windows pour charger PuTTY ou un programme similaire, puis le désactiver. commande (et probable si le résultat est bon).

10
FreeSoftwareServers

Utilisez la ligne de commande PuTTY version plink.exe pour établir une connexion SSH vers un hôte de votre choix. Utilisez le commutateur -ssh pour vous connecter à SSH. Avec le commutateur -m, vous pouvez inclure un fichier de commande:

plink.exe -ssh Host1 -m C:\path\to\commands.txt

Vous pouvez télécharger plink.exe de ici.

La dernière étape serait de créer un raccourci incluant plink.exe avec les paramètres souhaités.

Consultez la documentation de Plink pour d’autres paramètres: Documentation de Plink.exe

14
Smeerpijp

Pour automatiser l'exécution d'une commande, utilisez Plink (du paquetage PuTTY) , pas PuTTY lui-même.

Plink accepte une commande sur sa ligne de commande:

plink.exe user@Host command

Si vous souhaitez continuer à utiliser PuTTY, vous pouvez utiliser _ COMMUTATEUR -m pour spécifier un fichier de commande (Plink prend également en charge le commutateur -m).

8
Martin Prikryl

Vous pouvez utiliser les configurations PuTTY pour y parvenir.

Chargez PuTTY et configurez votre session.

Entrez la commande à distance que vous souhaitez exécuter ici:

PuTTY remote command box

Ensuite, avant de cliquer sur " Ouvrir ", revenez à l'onglet " Session " (en haut) et enregistrez votre configuration. .

Créez maintenant un raccourci vers PuTTY.exe, en ajoutant le drapeau -load, par exemple:

%PATH_TO_PuTTY%\PuTTY.exe -load my_config

Maintenant, vous pouvez simplement cliquer sur le raccourci et cela chargera votre session, exécutant votre commande.

6
Attie

Je pensais que j'insérerais le script que j'ai créé pour économiser, espérons-le, des heures de recherche syntaxique et de pages de manuel.


a) fichier SingleIP, IP Range ou IPList
b) nom du script à exécuter sur l’IP/plage (script de type unix sh/ksh actuel)
c) le cas échéant, effectuez une analyse nmap du port 22 ouvert (c’est-à-dire un sous-réseau avec des machines autres que Linux)
       -vouloir éviter les adresses IP sur lesquelles PuTTY ne peut pas se connecter, évitant ainsi que le script puisse continuer correctement
d) éventuellement exécuter la commande pscp pour mettre en cache automatiquement la clé de l'hôte (PuTTY ne le fait pas automatiquement)

Ce lot suppose:


1. le paquet complet PuTTY et la clé SSH sont installés dans C:\Program Files\PuTTY\
2. Les fichiers batch/scripts/IPlist installés dans C:\Program Files\PuTTY\scripts\
3. Les répertoires de travail NMAP et PuTTY sont dans votre chemin de commande

https://www.harmonyhit.com/PuttyBatch.bat

Ceci est surtout utile pour avoir un seul script (comme la mise à jour d'un certificat SSL) sur une gamme de machines.

Voici le fichier batch complet:

@ECHO OFF 
 
 Rem Vous devez modifier les sections CACHEKEY et SCRIPT afin de refléter l'emplacement de votre clé SSH 
 
 Set IPFILE = IPList_temp.txt 
 Set runagain = n 
 définir OPTION = 1 
 définir GAMME = 
 définir IP = 
 définir SCAN = n 
 définir KEYCACHE = n 
 
: OPTION 
 CLS 
 ECHO (le répertoire de travail est défini sur C:\Program Files\PuTTY\scripts \) ​​
 ECHO. 
 ECHO 1. IP unique 
 ECHO 2. Fichier de liste IP 
 ECHO 3. Plage d'adresses IP 
 ECHO. 
 Type d'IP: "
 IF% OPTION% == 3 GOTO IPRANGE 
 IF% OPTION% == 2 GOTO IPLIST 
 IF%% OPTION == 1 GOTO SINGLEIP 
 echo Veuillez sélectionner une option valide 
 OPTION GOTO 
 
: IPRANGE 
 ECHO Entrez la ou les plages d'adresses IP comme dans l'exemple suivant. Utilisez un espace entre plusieurs plages: 
 ECHO, par exemple "10.21.0.15-99 10.21.1.15-100" 
 Set/p RANGE = Enter Plage: 
 Echo% RANGE%>% IPFILE% 
 GOTO SCRIPTNAME 
 
: SINGLEIP 
 Set/p IP = Entrer IP: 
 Echo% IP%>% IPFILE% 
 GOTO SCRIPTNAME 
 
: IPLIST 
 Set/p IP = Entrer le nom du fichier IPList: 
 Copier/Y% IP%% IPFILE% 
 GOTO. SCRIPTNAME 
 
: SCRIPTNAME 
 Set/p SCRIPT = Entrez le nom du script: 
 S'il n'existe pas% SCRIPT% (
 Echo nom_fichier n'existe pas! 
 GOTO SCRIPTNAME) 
 
 ECHO. 
 Set/p SCAN = Est-ce que Nmap balaye d'abord? (recommandé): 
 si% SCAN% == n GOTO: RUNCACHE 
 
 rem Vérifiez si le type IP est "range" car nmap ne peut pas lire une plage IP du fichier et doit être tapez directement dans la commande nmap 
 IF% OPTION% == 3 GOTO NMAPRANGE 
: NMAP 
 echo Analyse d'adresses IP pour le port 22 ouvert ... 
 nmap --open -n -p22 -iL% IPFILE% -oG - | findstr/E Up> nmap_temp.txt 
 GOTO AFTERNMAP 
 
: NMAPRANGE 
 echo Analyse des adresses IP du port 22 ouvert ... 
 nmap - open -n -p22% RANGE% -oG - | findstr/E Up> nmap_temp.txt 
 
: AFTERNMAP 
 echo DONE 
 La mise en forme de nmap n'est pas correcte, les informations suivantes suppriment des informations supplémentaires 
 pour/f "tokens = 2" %% A dans (nmap_temp.txt) echo %% A >> nmap_temp2.txt 
 supprime l’espace caché à la fin de l’IP (nécessite que "repl" soit dans le répertoire du fichier de commandes ) 
 tapez "nmap_temp2.txt" | repl "" "">% IPFILE% 
 
: RUNCACHE 
 set/p KEYCACHE = Balayer et mettre en cache la clé SSH (y/n)? 
 si% KEYCACHE % == n GOTO SCRIPT 
 
: CACHEKEY 
 rem Exécute toutes les adresses IP pour mettre en cache la clé d’hôte SSH s’il n’a pas déjà été mis en cache 
 pour/F "tokens = * "%% A dans (% IPFILE%) do (echo y |" C:\Program Files\PuTTY\pscp.exe "-l racine -i" C:\Program Files\PuTTY\SSH.ppk "-touch %% A:/tmp/test) 
 
: SCRIPT 
 Pour/F "jetons = 1" %% A dans (% IPFILE%) faire ("C:\Program Files\PuTTY\putty.exe "-ssh %% A -t -l racine -i" C:\Program Files\PuTTY\SSH.ppk "-m" C:\Program Files\PuTTY\scripts \% SCRIPT% ") 
 s'il existe nmap_temp.txt (del nmap_temp.txt) 
 s'il existe nmap_temp2.txt (del nmap_temp2.txt) 
 set/p runagain = "Appuyez sur Entrée pour terminer ou sur y pour relancer "
 si% runagain% == y GOTO OPTION
2
Todd Porter

Si vous utilisez Windows 10, sachez que Microsoft aurait apparemment une version bêta de OpenSSH (client ) et serveur):

[…] Allez dans "Gérer les fonctionnalités optionnelles" puis + "Ajouter une fonctionnalité". Vous pouvez ensuite faire défiler la liste et trouver les fonctionnalités OpenSSH Client (Beta) et OpenSSH Server (Beta) dans Windows. L’idée d’exécuter un autre service distant sous Windows peut être décourageante. Nous ne vous en voulons donc pas si vous ne souhaitez pas installer le serveur.

Une fois installé, vous pouvez simplement lancer votre ligne de commande et utiliser le client OpenSSH en tapant ssh suivi de la commande telle que ssh ubuntu@someIP.

Voici le guide d'utilisation actuel de la commande ssh (en date du 28 novembre 2017) obtenu avec le client Windows OpenSSH:

C:\WINDOWS\system32>ssh
usage: ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
           [-D [bind_address:]port] [-E log_file] [-e escape_char]
           [-F configfile] [-I pkcs11] [-i identity_file]
           [-J [user@]Host[:port]] [-L address] [-l login_name] [-m mac_spec]
           [-O ctl_cmd] [-o option] [-p port] [-Q query_option] [-R address]
           [-S ctl_path] [-W Host:port] [-w local_tun[:remote_tun]]
           [user@]hostname [command]
C:\WINDOWS\system32>

Si cela fonctionne, vous devriez pouvoir utiliser ssh comme vous le feriez sur un * Nix:

C:\WINDOWS\system32>ssh user@Host "ls -l ~"
2
Michael

Vous pouvez également consulter des logiciels tels que mRemoteNG, MOBAxTerm ou SecureCRT, qui gèreront vos connexions SSH. Ces liens sont également liés aux sessions PuTTY enregistrées pour vous permettre d'appliquer un modèle à la session.

1
Gubbins

C'est le "CMD" final que je peux simplement enregistrer sur mon serveur de fichiers et créer un raccourci sur mon bureau.

::FreeSoftwareServers
::Automated Opening of SSH Tunnel & Execute CMD on Remote Host
::https://superuser.com/questions/1278434/create-a-batch-file-or-shortcut-to-PuTTY-ssh-that-opens-a-session-and-runs-a-c

set puttydir="C:\Program Files\PuTTY"
set exe=plink.exe
::Profile must exist in PuTTY
set remotehost=FileServer
set remotecmd="chmod 777 /mnt/mdadm/torrents -R"

cd %puttydir% 

%exe% %remotehost% %remotecmd%

::Test First Manually in CMD Prompt
::Note Remote Host does NOT have access to BashRC Alias's
::start "C:\Program Files\PuTTY\" plink.exe -ssh FileServer touch /tmp/testfile
::start "C:\Program Files\PuTTY\" plink.exe -ssh FileServer ~/script.sh
0
FreeSoftwareServers