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.

52
demandé sur Martin Prikryl 2011-05-27 06:24:37

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:

22
répondu Gary Tsui 2013-09-04 09:58:50

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.

98
répondu James Anderson 2013-06-19 15:39:04

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.

3
répondu Himanshu 2011-05-27 02:29:40

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.

2
répondu lwpro2 2013-11-13 15:58:13

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

Lien: https://huseyincakir.wordpress.com/2015/08/27/send-commands-to-a-remote-device-over-puttyssh-putty-send-command-from-command-line/

1
répondu huse.ckr 2015-11-20 19:25:10

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 .

1
répondu Martin Prikryl 2017-02-12 19:51:24

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.

0
répondu Sudheesh.M.S 2015-03-30 14:53:10

Voici une solution totalement prête à l'emploi.

  1. Installer AutoHotKey (ahk)
  2. mappe le script à une clé (par exemple F9)
  3. 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.

0
répondu Amit 2015-05-21 12:32:15