Je cherche à scripter quelque chose en batch qui devra exécuter des commandes ssh distantes sous Linux. Je voudrais que la sortie soit renvoyée pour que je puisse l'afficher à l'écran ou la consigner.
J'ai essayé PuTTY.exe -ssh user@Host -pw password -m command_run
mais il ne renvoie rien sur mon écran.
Quelqu'un a fait ça avant?
Le commutateur -m
de PuTTY prend un chemin dans un fichier de script en tant qu'argument, et non comme une commande .
Référence: https://the.earth.li/~sgtatham/PuTTY/latest/htmldoc/Chapter3.html#using-cmdline-m
Vous devez donc enregistrer votre commande (command_run
) dans un fichier texte brut (par exemple, c:\path\command.txt
) et la transmettre à PuTTY:
PuTTY.exe -ssh user@Host -pw password -m c:\path\command.txt
Notez cependant que vous devez utiliser Plink (un outil de connexion en ligne de commande de la suite PuTTY). C'est une application console, vous pouvez donc rediriger sa sortie vers un fichier (ce que vous ne pouvez pas faire avec PuTTY).
Une syntaxe de ligne de commande est identique, une redirection de sortie a été ajoutée:
plink.exe -ssh user@Host -pw password -m c:\path\command.txt > output.txt
Voir Utilisation de l'outil de connexion de ligne de commande Plink .
Et avec Plink, vous pouvez réellement fournir la commande directement sur sa ligne de commande:
plink.exe -ssh user@Host -pw password command > output.txt
Questions similaires:
Automatisation de la commande en cours d’exécution sous Linux à partir de Windows avec PuTTY
Exécution d'une commande dans Plink à partir d'un fichier de commandes
Vous pouvez également utiliser Bash on Ubuntu on Windows
directement. Par exemple.,
bash -c "ssh -t user@computer 'cd /; Sudo my-command'"
Commentaire de Martin Prikryl ci-dessous:
Le -t permet l'émulation de terminal. Si vous avez besoin de l'émulation de terminal pour Sudo dépend de la configuration (et par défaut, vous n'en avez pas besoin, alors que de nombreuses distributions remplacent la valeur par défaut). Au contraire, de nombreuses autres commandes nécessitent une émulation de terminal.
Vous pouvez également installer OpenSSH http://www.mls-software.com/opensshd.html puis simplement ssh user@Host -pw password -m command_run
Edit: Après une réponse de user2687375 lors de l’installation, sélectionnez uniquement le client. Une fois que cela est fait, vous devriez pouvoir lancer SSH à partir d'une commande.
Ensuite, vous pouvez créer un script de lot ssh tel que
ECHO OFF
CLS
:MENU
ECHO.
ECHO ........................
ECHO SSH servers
ECHO ........................
ECHO.
ECHO 1 - Web Server 1
ECHO 2 - Web Server 2
ECHO E - EXIT
ECHO.
SET /P M=Type 1 - 2 then press ENTER:
IF %M%==1 GOTO WEB1
IF %M%==2 GOTO WEB2
IF %M%==E GOTO EOF
REM ------------------------------
REM SSH Server details
REM ------------------------------
:WEB1
CLS
call ssh [email protected]
cmd /k
:WEB2
CLS
call ssh [email protected]
cmd /k