Comment exécuter un fichier de commandes dans PuTTY en utilisant la connexion automatique dans une invite de commande?

19

J'utilise les éléments suivants pour me connecter automatiquement à un serveur distant, puis exécuter les commandes répertoriées dans a commands.txt, comme ceci:

C:\path\to\putty.exe -load "[Sessionname]" -l [user] -pw [password] -m C:\path\to\commands.txt

commands.txt contient les éléments suivants:

ps -elf|grep 'sometext'

Cependant, lorsque j'essaie de le faire, une nouvelle fenêtre pour PuTTY apparaît, mais elle se ferme et se ferme instantanément après la connexion. Par conséquent, je ne peux pas voir la sortie de la ou des commandes.

Je ne comprends pas ce qui se passe ici. Ai-je tort dans mon approche ou dois-je prendre plus de mesures pour faire une pause de la fenêtre PuTTY pendant un certain temps avant de quitter?

Peter Mortensen
la source
2
Pensez à utiliser Plink.exe à la place (généralement fourni avec Putty, n'oubliez pas d'inclure dans PATH). J'ai passé 2 heures à rechercher comment spécifier la clé rsa dans une ligne de commande pour PuTTY, car il est dangereux de coder en dur les mots de passe. J'ai négligé la solution Plink parce que je pensais que l'appel devait commencer par du mastic. Vérifiez la réponse ci-dessous en mentionnant Plink. par exemple `Plink.exe -ssh host -l user -ic: \ Users \ myName \ .ssh \ myGeneratedPuttyKey.ppk
Soren Havelund Welling

Réponses:

11

Vous devez utiliser plink.exe(une interface de ligne de commande pour les backends PuTTY) et nonputty.exe

Vous l'obtenez sur la page de téléchargement de PuTTY

Sans plink:

Il semble que le seul moyen consiste à utiliser les -log <logfile>options, puis à imprimer son contenu et à le supprimer.

Aviram Segal
la source
Je ne peux pas utiliser plink ou d'autres interfaces de ligne de commande. Y a-t-il une autre façon de le faire
2
@supportpb "Je ne peux pas utiliser plink" - pourquoi? que se passe-t-il si vous essayez?
gertvdijk
1
@gertvdijk ce qui se passe, c'est qu'il est licencié pour avoir utilisé un logiciel non approuvé sur des machines d'entreprise ...
Torben Gundtofte-Bruun
option non prise en charge:-log
Allan Bowe
9

Vous devez d'abord créer un fichier séparé contenant toutes les commandes que vous souhaitez exécuter.

Exemple: je voudrais télécharger et installer Drupal sur mon domaine en utilisant PuTTY. Pour ce faire, vous devez:

Créez d'abord un fichier .txt. Dans ce fichier se trouvent les commandes. Les miens sont: " drush dl drupal " ligne suivante, " drush si --account-name = [account name] --account-pass = [account pass] --db-url = mysql: // [user]: [pass ] @ localhost / [nom de la base de données] --y "

Après avoir enregistré ce fichier, vous allez maintenant créer un fichier BAT ou le saisir dans l'invite CMD:

  • ssh.cmd
  • @echo on [pour voir ce qui se passe]
  • [Accédez à votre installation PuTTY. Le mien est:] cd C: \ Program Files \ Putty
  • Début putty.exe -ssh [domain name] -l [username] -pw [password] -m [the directory of the .txt file you created which contains the codes you want to be executed]
Jero Dungog
la source
L'option -m ne fonctionne pas pour moi. il donne une erreur disant ne peut pas ouvrir le fichier de commandes <chemin vers mon fichier texte>
user590849
@ user590849 le chemin vers votre fichier texte de commande contient-il un espace blanc? Parce que je viens
Black Frog
2

Votre approche semble bonne, cependant, il y a un paramètre par défaut dans le comportement qui vous cause des problèmes ici et vous fait probablement croire que rien ne se passe.

Cependant, lorsque j'essaie de le faire, une nouvelle fenêtre pour PuTTY apparaît, mais se ferme et se ferme instantanément après la connexion

Votre session se termine immédiatement après l'exécution de la commande et PuTTY ferme la fenêtre par défaut. Consultez la documentation de PuTTY pour savoir comment modifier ce comportement pour votre session.

4.1.3 `Close Window on Exit'

   Finally in the Session panel, there is an option labelled `Close
   Window on Exit'. This controls whether the PuTTY terminal window
   disappears as soon as the session inside it terminates.
gertvdijk
la source
Intéressant, mais cela affectera également les sessions manuelles ...
Aviram Segal
1
@AviramSegal C'est un paramètre de session. Dupliquez simplement la configuration de la session, dites-la session-nocloseet utilisez-la dans les scripts.
gertvdijk
1
oh réglage de la session, alors oui cela fonctionnera
Aviram Segal
1

Il n'y aurait aucun problème si vous souhaitez simplement créer le fichier batch pour ouvrir la machine Unix. Voici l'exemple:

"PuTTY path" -ssh machinename -l username -pw password

Le chemin PuTTY doit être entre guillemets, comme "C: \ Program Files \ putty \ putty.ext"

machinename = machinename sans guillemets doubles

mot de passe = avec guillemets

user443234
la source
0

En plus de la réponse d'Aviram:

Voici l'exemple de la façon dont vous exécuterez les commandes PuTTY à partir de l'invite de commande:

  • Tout d' abord aller dans le répertoire d'installation PuTTY, par exemple C:\Program Files\PuTTY, puis exécutez la commande ci - dessous:

    plink.exe -ssh server_ip -P port_no -l user_name -pw mot de passe

Vishrant
la source