Автоматизация запуска команды в Linux из Windows с помощью PuTTY - PullRequest
61 голосов
/ 27 мая 2011

У меня есть сценарий, в котором мне нужно часто запускать команду a linux shell (с разными именами файлов) из окон. Я использую PuTTY и WinSCP для этого (требуется логин и пароль). Файл копируется в предопределенную папку на машине linux через WinSCP, а затем команда запускается из PuTTY. Есть ли способ, которым я могу автоматизировать это с помощью программы. В идеале я хотел бы щелкнуть правой кнопкой мыши файл из окон и выполнить команду, которая скопирует файл на удаленный компьютер и запустит предопределенную команду (в PuTTy) с именем файла в качестве аргумента.

Ответы [ 9 ]

111 голосов
/ 27 мая 2011

Putty обычно поставляется с утилитой "plink".
По сути, это команда командной строки "ssh", реализованная в виде windows .exe.
Она довольно хорошо документирована в руководстве по замазке.в разделе «Использование командной строки plink».

Вам просто нужно обернуть команду, например:

plink root@myserver /etc/backups/do-backup.sh

, в скрипт .bat.

Вы также можете использоватьобщие конструкции оболочки, такие как точки с запятой для выполнения нескольких команд.Например:

plink read@myhost ls -lrt /home/read/files;/etc/backups/do-backup.sh
28 голосов
/ 27 мая 2011

Могут быть проблемы с безопасностью с распространенными методами автоматического входа.Один из самых простых способов описан ниже:

А что касается части, то она выполняет командуВ putty UI Connection> SSH> есть поле для удаленной команды.

4.17 Панель SSH

Панель SSH позволяет настраивать параметры, которые применяются только к сеансам SSH.

4.17.1 Выполнение определенной команды на сервере

В SSH вам не нужно запускать общий сеанс оболочки на сервере.Вместо этого вы можете выбрать запуск одной конкретной команды (например, почтового агента пользователя).Если вы хотите сделать это, введите команду в поле «Удаленная команда».Короче говоря, http://the.earth.li/~sgtatham/putty/0.53/htmldoc/Chapter4.html

, ваши ответы могут быть похожи на приведенный ниже текст:

4 голосов
/ 27 мая 2011

Вы можете написать сценарий TCL и установить сессию SSH на эту машину Linux и автоматически выдавать команды. Проверьте http://wiki.tcl.tk/11542 для краткого учебника.

3 голосов
/ 15 мая 2013

Вы можете выполнять обе задачи (выгрузка и выполнение команды) с помощью WinSCP.Используйте сценарий WinSCP, например:

option batch abort
option confirm off
open your_session
put %1%
call script.sh
exit

Ссылка для команды call:
https://winscp.net/eng/docs/scriptcommand_call

Ссылка для синтаксиса %1%:
https://winscp.net/eng/docs/scripting#syntax

Затем вы можете запустить скрипт следующим образом:

winscp.exe /console /script=script_path\upload.txt /parameter file_to_upload.dat

На самом деле, вы можете поставить ярлык для вышеуказанной команды в меню Send To проводника Windows, чтобы вы моглизатем просто щелкните правой кнопкой мыши любой файл и перейдите к Отправка> Загрузка с помощью WinSCP и Выполните удаленную команду (= имя ярлыка).

Для этого перейдите в папку %USERPROFILE%\SendTo и создайте ярлык со следующей целью:

winscp_path\winscp.exe /console /script=script_path\upload.txt /parameter %1

См. Создание записи в меню проводника «Отправить» .

3 голосов
/ 08 мая 2013

Вы можете создать сеанс замазки и автоматически загрузить скрипт на сервере при запуске сеанса:

putty -load "sessionName" 

При удаленной команде укажите на удаленный скрипт.

2 голосов
/ 28 августа 2015

Код:

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);
    }
}

}

Пример команд .txt:

ps

Ссылка: https://huseyincakir.wordpress.com/2015/08/27/send-commands-to-a-remote-device-over-puttyssh-putty-send-command-from-command-line/

1 голос
/ 21 мая 2015

Вот совершенно нестандартное решение.

  1. Установить AutoHotKey (ахк)
  2. Сопоставить скрипт с ключом (например, F9)
  3. В сценарии "ахк" a) Ftp файл команд (.ksh) на машину linux

    б) Используйте plink, как показано ниже. Плинк должен быть установлен, если у вас есть шпатлевка.

plink sessionname -l username -pw пароль test.ksh

или

plink -ssh example.com -l имя пользователя -pw пароль test.ksh

Все шаги будут выполняться последовательно, когда вы нажимаете F9 в Windows.

1 голос
/ 30 марта 2015

Попробуйте MtPutty , Вы можете автоматизировать вход в систему по SSH. Это отличный инструмент, особенно если вам нужно войти на несколько серверов много раз. Попробуйте здесь

Другой инструмент, который стоит попробовать - TeraTerm Его действительно легко использовать для автоматизации работы с ssh. Вы можете получить это здесь . Но мой любимый всегда MtPutty.

0 голосов
/ 12 марта 2019

В случае, если вы используете аутентификацию на основе ключей, кажется, что использование сохраненного сеанса Putty работает отлично, например, для запуска сценария оболочки на удаленном сервере (в моем случае ec2). Сохраненная конфигурация позаботится об аутентификации.

C: \ Users> plink сохраненное_производство_сессион_имя path_to_shell_file / filename.sh

Пожалуйста, помните, что если вы сохраняете сеанс с именем наподобие (user @ hostname), эта команда не будет работать, так как она будет рассматриваться как частьудаленной команды.

...