it-swarm.com.ru

Лучший способ создания сценариев удаленных команд SSH в пакетном режиме (Windows)

Я ищу сценарий что-то в пакетном режиме, что нужно будет запускать удаленные команды SSH в Linux. Я хотел бы, чтобы вывод был возвращен, чтобы я мог либо отобразить его на экране, либо записать в журнал.

Я пробовал PuTTY.exe -ssh [email protected] -pw password -m command_run, но он ничего не возвращает на моем экране.

Кто-нибудь делал это раньше?

18
leeman24

Параметр -m в PuTTY принимает аргумент path к файлу скрипта, а не command.

Ссылка: https://the.earth.li/~sgtatham/PuTTY/latest/htmldoc/Chapter3.html#using-cmdline-m

Поэтому вы должны сохранить свою команду (command_run) в виде простого текстового файла (например, c:\path\command.txt) и передать его в PuTTY:

PuTTY.exe -ssh [email protected] -pw password -m c:\path\command.txt

Обратите внимание, что вы должны использовать Plink (инструмент для подключения к командной строке из пакета PuTTY). Это консольное приложение, поэтому вы можете перенаправить его вывод в файл (что вы не можете сделать с PuTTY).

Синтаксис командной строки идентичен, добавлено перенаправление вывода:

plink.exe -ssh [email protected] -pw password -m c:\path\command.txt > output.txt

Смотрите Использование инструмента подключения командной строки Plink .

А с Plink вы можете фактически предоставить команду непосредственно в ее командной строке:

plink.exe -ssh [email protected] -pw password command > output.txt

Похожие вопросы:
Автоматизация запуска команды в Linux из Windows с помощью PuTTY
Выполнение команды в Plink из командного файла

31
Martin Prikryl

Вы также можете использовать Bash on Ubuntu on Windows напрямую. Например.,

bash -c "ssh -t [email protected] 'cd /; Sudo my-command'"

Комментарий Мартина Прикрила ниже:

-T включает эмуляцию терминала. Нужна ли вам эмуляция терминала для Sudo, зависит от конфигурации (и по умолчанию она вам не нужна, хотя многие дистрибутивы переопределяют настройки по умолчанию). Напротив, многим другим командам требуется эмуляция терминала.

2
Jon49

В качестве альтернативы вы можете установить OpenSSH http://www.mls-software.com/opensshd.html а затем просто ssh [email protected] -pw password -m command_run

Правка: После ответа от user2687375 при установке выберите только клиент. Как только это будет сделано, вы сможете инициировать SSH из команды.

Затем вы можете создать пакетный скрипт ssh, такой как

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
1
campervancoder