Automatisation de la commande en cours D'exécution sur Linux à partir de Windows à L'aide de PuTTY
J'ai un scénario où je dois exécuter une commande shell linux fréquemment (avec des noms de fichiers différents) à partir de windows. J'utilise PuTTY et WinSCP pour le faire (nécessite un nom de connexion et un mot de passe). Le fichier est copié dans un dossier prédéfini dans la machine linux via WinSCP, puis la commande est exécutée à partir de PuTTY. Existe-t-il un moyen par lequel je peux automatiser cela à travers un programme. Idéalement je voudrais faire un clic droit sur le fichier à partir de windows et émettre la commande qui copierait le fichier machine distante et exécutez la commande prédéfinie (dans PuTTy) avec le nom de fichier comme argument.
8 réponses
Il pourrait y avoir des problèmes de sécurité avec les méthodes courantes pour la connexion automatique. L'un des moyens les plus faciles est documenté ci-dessous:
Et comme pour la partie, la commande est exécutée Dans l'interface utilisateur putty, connexion > SSH> il y a un champ pour la commande à distance.
4.17 le panneau SSH
Le panneau SSH vous permet de configurer options qui s'appliquent uniquement à SSH session.
4.17.1 exécution d'un commande spécifique sur le serveur
En SSH, vous n'avez pas besoin d'exécuter un session shell générale sur le serveur. Au lieu de cela, vous pouvez choisir d'exécuter un commande spécifique unique (telle qu'un un agent utilisateur de messagerie, par exemple). Si vous vous voulez faire cela, entrez la commande dans la "commande à Distance" de la boîte. http://the.earth.li/~sgtatham/putty/0.53/htmldoc/Chapter4.html
Bref, vos réponses pourraient tout aussi bien être semblable au texte ci-dessous:
Putty habituellement est livré avec l'utilitaire" plink".
Il s'agit essentiellement de la commande de ligne de commande "ssh" implémentée en tant que windows .EXE.
Il est assez bien documenté dans le manuel putty sous "utilisation de l'outil de ligne de commande plink".
Vous avez juste besoin d'envelopper une commande comme:
plink root@myserver /etc/backups/do-backup.sh
Dans A.script chauve-souris.
Vous pouvez écrire un script TCL et établir une session SSH sur cette machine Linux et émettre des commandes automatiquement. Vérifier http://wiki.tcl.tk/11542 pour un court tutoriel.
Vous pouvez créer une session putty et charger automatiquement le script sur le serveur lors du démarrage de la session:
putty -load "sessionName"
À la commande distante, pointez sur le script distant.
Code:
using System;
using System.Diagnostics;
namespace playSound
{
class Program
{
public static void Main(string[] args)
{
Console.WriteLine(args[0]);
Process amixerMediaProcess = new Process();
amixerMediaProcess.StartInfo.CreateNoWindow = false;
amixerMediaProcess.StartInfo.UseShellExecute = false;
amixerMediaProcess.StartInfo.ErrorDialog = false;
amixerMediaProcess.StartInfo.RedirectStandardOutput = false;
amixerMediaProcess.StartInfo.RedirectStandardInput = false;
amixerMediaProcess.StartInfo.RedirectStandardError = false;
amixerMediaProcess.EnableRaisingEvents = true;
amixerMediaProcess.StartInfo.Arguments = string.Format("{0}","-ssh username@"+args[0]+" -pw password -m commands.txt");
amixerMediaProcess.StartInfo.FileName = "plink.exe";
amixerMediaProcess.Start();
Console.Write("Presskey to continue . . . ");
Console.ReadKey(true);
}
}
}
Exemples de commandes.txt:
Ps
Vous pouvez effectuer les deux tâches (le téléchargement et l'exécution de la commande) en utilisant WinSCP. Utilisez le script WinSCP comme:
option batch abort
option confirm off
open your_session
put %1%
call script.sh
exit
Référence pour la call
commande:
https://winscp.net/eng/docs/scriptcommand_call
Référence pour la %1%
syntaxe:
https://winscp.net/eng/docs/scripting#syntax
Vous pouvez ensuite exécuter le script comme:
winscp.exe /console /script=script_path\upload.txt /parameter file_to_upload.dat
En fait, vous pouvez mettre un raccourci vers la commande ci-dessus dans le menuSend To de L'Explorateur Windows, donc que vous pouvez ensuite cliquer avec le bouton droit sur n'importe quel fichier et aller à Envoyer à > télécharger en utilisant WinSCP et exécuter la Commande À Distance (=Nom du raccourci).
Pour cela, allez dans le dossier %USERPROFILE%\SendTo
et créez un raccourci avec la cible suivante:
winscp_path\winscp.exe /console /script=script_path\upload.txt /parameter %1
Voir créer une entrée dans le menu "Envoyer à" de L'Explorateur .
Essayez MtPutty , vous pouvez automatiser la connexion ssh en elle. C'est un excellent outil, surtout si vous devez vous connecter à plusieurs serveurs de nombreuses fois. Essayez - ici
Un autre outil à essayer est TeraTerm . C'est vraiment facile à utiliser pour l'automatisation ssh. Vous pouvez l'obtenir ici. Mais mon préféré est toujours MtPutty.
Voici une solution totalement prête à l'emploi.
- Installer AutoHotKey (ahk)
- mappe le script à une clé (par exemple F9)
-
Dans le script ahk, a) Ftp les commandes (.KSH) fichier sur la machine linux
B) utilisez plink comme ci-dessous. Plink doit être installé si vous avez du mastic.
Plink sessionname-l nom d'utilisateur-test de mot de passe pw.ksh
Ou
Plink-ssh example.com -l nom d'utilisateur-mot de passe pw test.ksh
Toutes les étapes seront effectuées dans l'ordre chaque fois que vous appuyez sur F9 dans windows.