Автоматизация выполнения команды в Linux из Windows с помощью PuTTY

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

8 ответов


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

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

4.17 панель SSH

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

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

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

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


шпаклевка обычно поставляется с утилитой "plink".
Это, по сути, команда командной строки "ssh", реализованная как windows .исполняемый.
Это довольно хорошо документировано в руководстве putty в разделе"использование инструмента командной строки plink".

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

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

в a .bat скрипт.


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


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

putty -load "sessionName" 

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


код:

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/


вы можете выполнять обе задачи (загрузка и выполнение команды) с помощью 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

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

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

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

посмотреть создание записи в меню Проводника "отправить".


попробовать MtPutty, вы можете автоматизировать вход ssh в нем. Его отличный инструмент, особенно если вам нужно войти в несколько серверов много раз. Попробуйте!--3-->здесь

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


вот полностью из коробки решение.

  1. установить аутохотки-AutoHotkey (АХК)
  2. сопоставьте скрипт с ключом (например, F9)
  3. в сценарии ahk, a) Ftp команды (.ksh) файл на машине linux

    b) используйте plink как ниже. Plink должен быть установлен, если у вас есть замазка.

plink sessionname-L имя пользователя-PW тест пароля.КШ

или

plink-ssh example.com -L имя пользователя-PW тест пароля.КШ

все шаги будут выполняться последовательно при нажатии клавиши F9 в windows.