Jumper — запуск скрипта на удалённом сервере


Запуск Команд на Удаленном Linux Сервере через SSH

В этой заметке Вы найдете различные примеры того, как выполнять команды на удаленном Linux сервере и получать результат локально.

Данная информация будет очень полезна, если Вы пишете Bash скрипт, который будет запускаться с локальной машины и выполнять какие-либо команды на удаленном сервере.

  • выполнить команду на удаленном Linux сервере;
  • запустить множество команд через SSH;
  • выполнить локальный скрипт на удаленном Linux сервере без его копирования.

Запуск программы / скрипта на удаленной машине по сети

Всем привет. Имеем комп и девайс в локальной сети. Необходимо как-то передать программу с компьютера и автоматически запустить ее на девайсе. Передать, например, можно по ssh, но как ее автоматически запускать? Подскажите решение, запарился уже флешкой тягать.

что значит автоматически запустить? По таймеру, по какому-то событию?

Не понятно что значит «автоматически запускать», по какому признаку? По времени? При ребуте? При логине ? При etc?

Программа собирается на хосте и отправляется по команде с хоста. Соответственно запускаться должна либо как только закончится передача, либо когда хост даст команду

scp для отправки с компа на девайс
ssh -C для запуска на девайсе
а что за девайс? а то может adb лучше?

Спасибо! Девайс Raspberry Pi. Насколько я понимаю, адб на нем не выйдет поднять. Вариант с сетью меня в целом устраивает.

Если запустишь там андроид, то может пригодиться и adb.
Приложение консольное, или графика? Если графика, то переменной DISPLAY можешь управлять на какой экран отправлять вывод.

Консольное. Еще раз спасибо за инфу

Я когда использовал нетбук как голосовой обработчик, так я говорил слова, нетбук отправлял на главный компьютер, наверное по scp, а там добавлялся в файл строка команда, главный компьютер выполнял по строчно. Но я не помню точно, как там проверялось, но можешь попробывать написать смотрителя ( стража ), на определённый каталог или файл. Там у watch (стража) есть реакция на новый файл в каталоге или открыт или произведена запись в файл. Посмотри в книге Линукс. Системное программирование. Глава 8, пункт Стражи, страница 316.

Как выполнить скрипт .sh на удаленном сервере (linux & ubuntu), используя PuTTY в windows

PuTTY не нуждается в представлении, так как это одна из широко удаленных консольных утилит. PuTTY — это клиент SSH и telnet.

Хотя использовать консоль уже просто и легко, вы, скорее всего, иногда ошибаетесь (и случайно удаляете папку проекта). Вы можете автоматизировать задачи вашего сервера, не вводя все, что вам нужно каждый день (перейдите в папку, сделайте что-нибудь там, затем выйдите, перейдите к другим и т. Д.).

Сделать это легко для вас и вашей команды. В этой статье вы узнаете, как выполнить сценарий оболочки из windows на удаленный сервер, используя PuTTY и командную строку windows.

Создание файла .sh

Обычно файл .sh представляет собой скрипт оболочки, который вы можете выполнить в терминале. Этот формат файла обычно используется для файлов оболочки Unix, созданных утилитой Unix shar.

Насколько это безопасно?

Может показаться странным, что для выполнения файла вам нужно выполнить еще одну задачу вручную. Но это частично из-за сильной потребности в безопасности.


По сути, когда вы загружаете и запускаете скрипт bash, это то же самое, что кто-то говорит вам: «Запустите все эти команды последовательно на вашем компьютере, я обещаю, что результаты будут хорошими». Спросите себя, доверяете ли вы стороне, предоставившей этот файл, спросите себя, уверены ли вы, что скачали файл из того же места, что и думали, возможно, даже загляните внутрь, чтобы увидеть, выглядит ли что-то неуместным (хотя для этого нужно знать что-то о * nix командах и программировании bash).

Заключение : выполнять только те команды, которые вы знаете, и только если вы знаете, как они работают.

Для начала создайте файл где-нибудь с расширением .sh (command_file.sh) где-то. Затем напишите сценарий оболочки.

В этом примере (самом базовом) мы собираемся напечатать дату в консоли Putty.

Это было действительно просто, не так ли?

Если хотите, начните создавать свои собственные, в следующем примере показано базовое взаимодействие с командами, которые вы обычно выполняете, используя putty (команда subversion svn update ):

Замечания: так как вы впервые создаете файл .sh для выполнения, убедитесь, что вы делаете все возможное, чтобы предотвратить любой ущерб, который вы можете нанести вашему серверу. Мы рекомендуем вам тестировать только с предыдущим скриптом, а когда у вас будет больше опыта, попробуйте с собственным.

Начните читать больше обо всех вещах, которые вы можете делать с файлами .sh на вашем сервере. Теперь, когда наш скрипт готов, нам просто нужно научиться выполнять его автоматически.

Выполнение сценария с использованием PuTTY из командной строки Windows

Теперь, когда ваш файл сценария готов, и (теоретически) вы знаете, чего хотите добиться с ним, нам просто нужно выполнить его и сэкономить много драгоценного времени.

Структура команды следующая:

putty.exe [connection (-ssh)] [username@serverIP-or-Domain] [parameter (-pw password)] [parameter (-m (read a remote command or script from a file) sh file to local path)]

-m опция ожидает, что ей будет присвоено имя локального файла, и она будет читать команду из этого файла.
На некоторых серверах (особенно в системах Unix) вы даже можете поместить в этот файл несколько строк и выполнить несколько последовательных команд или целый сценарий оболочки; но это возможно злоупотребление, и нельзя ожидать, что оно будет работать на всех серверах. В частности, известно, что он не работает с некоторыми «встроенными» серверами, такими как маршрутизаторы Cisco.
Эта опция недоступна в инструментах передачи файлов PSCP и PSFTP.

Цукерберг рекомендует:  Топ 10 бесплатных хостингов

Вся команда может быть легко выполнена в командной строке (cmd.exe) в Windows, например:

Замечания : вместо того, чтобы использовать полный путь к исполняемому файлу putty, вы можете определить переменную окружения для putty в windows, а затем использовать ее как %putty% ,

Откройте cmd.exe и выполните команду, заменяя соответственно учетные данные и параметры:

Наконец, после выполнения вашей команды в cmd.exe, будет открыта putty, и ваш скрипт будет выполнен, как мы сделали с первым примером, в консоли будет напечатана дата сервера:

Совет : вы можете создать интерфейс, используя другой язык, такой как C #, чтобы автоматизировать еще больше одним щелчком мыши

Захват выхода замазки (опционально)

Если ваш bash-скрипт не прост (он может генерировать вывод с информацией об ошибках, информацией и т. Д.), Вы можете сохранить контент для анализа, когда выполнение скрипта будет закрыто.

Так как putty обычно закрывает консоль, если нет оператора, который приостанавливает ее, когда выполняется последняя строка вашего скрипта, и нет способа перенаправить вывод (но достижимо с помощью утилиты plink), нам нужно указать эту задачу в приложении PuTTY.

1) Откройте замазку, нажмите на верхнюю иконку и выберите изменить настройки.

2) Нажмите на элемент ведения журнала в правом списке. Теперь выберите опцию All output output в области входа в сеанс.


Наконец, выберите путь к файлу putty.log в вашей системе и нажмите «Применить».

Весь вывод, сгенерированный замазкой, будет записан в этот файл журнала.

Удаленное выполнение команд на Linux-сервере из Windows

Вполне реальна ситуация, когда хотелось бы выполнить определенную команду на сервере Linux, но выполнить ее автоматически, да еще и с другой машины, при чем эта другая машина — Windows.

Например, к UPS подключены два компьютера, один их них Windows, второй — Linux. Предположим, UPS подключен по USB/RS232 к Windows-хосту. Когда пропадает питание, UPS позволяет выполнить 1) команду командной строки, 2) выключить компьютер. Если электричества нет, а батарея вот-вот разрядится, Windows-хост спокойно выключится, а вот Linux просто вырубится, как если бы при работе у него выдернули питание. Для решения задачи в текущих условиях необходимо выполнить с Windows-хоста команду выключения (или любую другую) на Linux-хосте до того, как UPS полностью разрядится.

Одним из вариантов решения может быть использование утилиты plink из состава пакета putty. Крайне желательно при этом настроить доступ по ssh по ключу, без пароля.

Все очень просто, на Windows-хосте запускаем cmd и выполняем команду:

plink 192.168.1.246 -ssh -P 22 -l userName -2 -4 -C -i path-to-private-key.ppk «shutdown -h 1»

  • 192.168.1.246 — ip Linux-хоста;
  • -P 22 — указание порта 22
  • -l userName — указание имени пользователя, от имени которого вы входите на Linux-хост;
  • -2 — используем протокол версии 2;
  • -4 (могло быть -6) — версия IP (IPv4 или IPv6);
  • -i path-to-private-key.ppk — путь к приватному ключу без пароля;
  • «shutdown -h 1» — команда для выполнения на Linux-хосте.

Полный список параметров можно просмотреть просто выполнив plink в командной строке cmd.

Выполняемые команды можно выполнить конвейром. Например, вместо «shutdown -h 1» попробуйте выполнить что-то вроде «cd /var; ls; echo »; echo ‘NEXT:’; echo »; cd /; ls -al» . Ну или что-то другое.

После выполнения команд, управление вернется в командную строку Windows.

Если на Windows-хосте есть уже настроенные сессии для putty, можно просто указать имя одной из них вместо указания отдельных параметров командной строки, например:

plink -load «session-name» «shutdown -h 1»

plink -load «session-name» -l userName «shutdown -h 1»

Удалённый запуск скрипта на Python через ssh без ключей

Есть необходимость чтоб скрипт на сервере (А) запускал скрип на сервере (В) и получал ответ отработки от (В).

Раньше я смотрел в сторону поднятия на обоих машинах Sokect (Server-client)

Но ведь можно же достучаться из (А) примерно как-то так:

  1. Есть ли какая нибудь библиотека типа sh, bash или это всё умеет os, sys?
  2. Далее нужно туда передать ещё пароль, это смотреть в man ssh?
  3. Без использования доступа по ключам.

3 Answers


Есть такая утилита — sshpass. Дает возможность передавать пароль параметром командной строки.

Но как уже говорилось — правильный способ, это доступ по ssh ключу.

Насколько мне известно, ssh не имеет способа принять пароль через параметр командной строки, поэтому без использования дополнительных средств не обойтись.

Для Python существует библиотека paramiko, позволяющая работать с SSH.

Выглядеть это будет таким образом:

При этом stdin , stdout и stderr ведут себя, как файлы. Если вам требуется что-то передать на стандартный вход программе, пишите в stdin ; если требуется что-то получить от скрипта, читайте из stdout ; если хотите контролировать поток ошибок программы, используйте stderr .

Статья на хабре про библиотеку (в комментариях описаны ссылки на дополнительные способы решения задачи)

самый простой способ — копируем скрипт на удаленный сервер (это можно сделать как ручками, так и с помощью scp). А потом просто выполняем команду вида ssh user@server ‘python script.py’ . Ответ будет выдан в STDOUT, поэтому его легко получить (точно также, как от любой другой программы, которая запускается локально).

Если скрипт генерируется ручками каждый раз и копировать лень (бывает), то выполняем например так cat script | ssh user@server ‘python’ . В случае с перлом, нужно писать ещё минус, что бы он понимал, что файл пришел с пайпа ( perl — ).

И последнее — пароль. Если скрипт должен выполнятся без участия пользователя — настройте ssh логин по ключу. Это самый правильный и простой способ. Как настроить доступ по ключам.

Удаленное управление с помощью PowerShell

Существует довольно много методов для работы с удаленными компьютерами. Есть Windows Management Instrumentation (WMI), широко используемый в VBScript. Есть различные утилиты, которые позволяют осуществлять удаленное управление, типа PSExec от Sysinternals. Даже многие командлеты PowerShell имеют параметр ComputerName для выполнения на удаленных компьютерах.

Цукерберг рекомендует:  Секреты эффективного e-mail маркетинга

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

PowerShell Remoting решает большинство описанных проблем. Он основан на Microsoft реализации протокола Web Services for Management (WS-Management), а для связи использует службу Windows Remote Management (WinRM). Связь между компьютерами осуществляется по HTTP (по умолчанию) или HTTPS. Весь трафик между двумя компьютерами шифруется на уровне протокола (за исключением случаев, когда используется SSL). Поддерживаются несколько методов аутентификации, включая NTLM и Kerberos.

В отличие от утилит, использующих различные программные интерфейсы, PS Remoting работает следующим образом: команды, вводимые на локальном компьютере, передаются на удаленный компьютер и там выполняются, затем результат передается обратно. Поскольку все команды выполняются локально, нет необходимости заботится о совместимости. Кроме того, для работы PS Remoting нужен всего один открытый порт на брандмауэре.

Есть несколько способов управления с помощью PowerShell Remoting.

Управление «один к одному»

Самый простой способ удаленного управления — интерактивно открыть удаленную сессию и в ней выполнить нужные действия. Например, откроем сессию на компьютер SRV4 и рестартуем на нем сервис печати:

Enter-PSSession -ComputerName SRV4
Restart-Service -Name spooler

Посмотрим состояние сервиса и закроем удаленную сессию:

Get-Service -Name spooler
Exit-PSSession

Интерактивная работа подходит для решения несложных задач удаленного администрирования. Если же надо автоматизировать процесс, то лучше воспользоваться командлетом Invoke-Command . Вот так с его помощью можно сделать то же самое действие:

Invoke-Command -ScriptBlock -ComputerName SRV4


Эта команда откроет удаленную сессию на SRV4, выполнит блок команд, указанный в параметре -ScriptBlock , и закроет сессию. А чтобы задание выполнялось в фоновом режиме, дополнительно можно указать параметр -AsJob .

Cледует помнить о том, что при работе в фоновом режиме PowerShell не возвращает результат. Для его получения придется воспользоваться командлетом Receive-Job .

Для того, чтобы выполнить не пару-тройку команд, а какой либо скрипт, у Invoke-Command есть параметр –FilePath , который можно использовать вместо –ScriptBlock для определения файла сценария. Для примера я создал скрипт, который выводит список остановленных служб и запустил его на удаленной машине SRV4:

Invoke-Command -FilePath .\script.ps1 -ComputerName SRV4

Управление «один ко многим»

Довольно часть возникает необходимость параллельно выполнить одну задачу на нескольких компьютерах. Это довольно легко можно сделать с помощью того же Invoke-Command . Например, имена компьютеров можно просто перечислить через запятую:

Invoke-Command -ScriptBlock -ComputerName SRV4,SRV5

Поместить в переменную:

$servers = @(″SRV1″,″SRV2″,″SRV3″)
Invoke-Command -ScriptBlock -ComputerName $servers

Или взять из файла:

Invoke-Command -ScriptBlock -ComputerName`
(Get-Content .\servers.txt)

Примечание: у Invoke-Command есть параметр ThrottleLimit , ограничивающий максимальное количество компьютеров, которыми можно управлять одновременно. По умолчанию этот параметр равен 32. При необходимости его можно изменить, но учтите, что повышение этого параметра увеличит нагрузку на процессор и память вашего компьютера, поэтому эту операцию нужно выполнять с большой осторожностью.

Сессии

Каждый раз при выполнении Invoke-Command создается новая сессия, на создание которой тратится время и ресурсы. Чтобы этого избежать мы можем открыть одну сессию, в которой и выполнять все команды. Например, откроем сессию с именем SRV4 на компьютер SRV4 и поместим ее в переменную $session, а затем этой сессии выполним нашу задачу (остановим многострадальный spooler):

$session = New-PSSession -ComputerName SRV4 -Name SRV4
Invoke-Command -ScriptBlock `
-Session $session

Сессия будет активна до того момента, пока мы не выйдем из консоли PowerShell. Также сессию можно закрыть — Disconnect-PSSession или удалить — Remove-PSSession .

А теперь несколько интересных возможностей, появившихся в PowerShell 3.0. Если раньше при выходе из сессии или закрытии консоли сессия удалялась, то в PS 3.0 при закрытии сессия переходит в состояние disconnected. Мы можем открыть новый сеанс на этом же (или любом другом) компьютере и выполнить команду прямо в этой отключенной сессии. В качестве примера стартуем на компьютере SRV4 сервис печати, остановленный в прошлый раз:

Invoke-Command -ScriptBlock `
-ComputerName SRV4 -Disconnected

Еще один вариант использования отключенных сессий — запуск длительных по времени задач. Для примера откроем сессию c именем LongJob на SRV4 и запустим в ней фоновое задание, которое будет выводить список сервисов с интервалом в 1 минуту:

$session = New-PSSession -ComputerName SRV4 -Name LongJob
Invoke-Command -Session $session -ScriptBlock`
> -AsJob

Посмотрим, как выполняется задача и закроем сессию:

Receive-Job -Name Job2
Disconnect-PSSession $session

Идем на другой компьютер и открываем консоль, Подключаемся к сессии LongJob и с помощью командлета Receive-PSSession получаем результат выполнения задания:


Connect-PSSession -Name LongJob -ComputerName SRV4
Receive-PSSession -Name LongJob

Или еще вариант, без явного подключения к сессии с помощью Connect-PSSession :

$session = Get-PSSession -Name LongJob -ComputerName SRV4
$job = Receive-PSSession $session -OutTarget Job
Receive-Job $job

Примечание: для того, чтобы результат остался в системе, Receive-Job надо использовать с параметром -Keep .

Неявное удаленное управление

Еще один, довольно нестандартный способ удаленного управления — неявное удаленное управление (Implicit remoting). Используя его можно, не создавая удаленной сессии, локально выполнять командлеты, находящиеся на удаленном компьютере.

Для примера берем обычную рабочую станцию, без установленных средств удаленного администрирования. Создаем удаленную сессию с контроллером домена SRV4 и импортируем в эту сессию модуль Active Directory:

$session = New-PSSession -ComputerName SRV4
Invoke-Command -Session $session

Затем экспортируем из удаленной сессии командлеты Active Directory и помещаем их в локальный модуль RemoteAD:

Export-PSSession -Session $session -CommandName *-AD* -OutputModule RemoteAD`
-AllowClobber

Эта команда создаст в папке WindowsPowerShell\Modules\RemoteAD новый модуль PowerShell. Загружены будут только командлеты с именами, соответствующими шаблону *-AD*. При этом сами командлеты не копируются на локальный компьютер. Локальный модуль служит своего рода ярлыком, а сами команды будут выполняться на удаленном контроллере домена.

Цукерберг рекомендует:  Создание шаблона Joomla за 6 шагов. Введение.

После создания модуля удаленную сессию можно закрыть, она больше не понадобится.

Импортируем новый модуль в текущий сеанс (в PS 3.0 можно этот шаг пропустить):

А теперь внимание — мы не открываем удаленную сессию с контроллером домена, где расположены командлеты. Не нужно явно запускать этот сеанс — это можно сделать неявно, попытавшись выполнить удаленные командлеты:

New-ADUser -Name BillGates -Company Microsoft
Get-ADUser BillGates

При этом будет восстановлено удаленное подключение к контроллеру домена, после чего команда будет передана на контроллер домена и там выполнена. Результат выполнения будет сериализован в XML и передан по сети на локальный компьютер, где будет выполнена десериализация в объекты, с которыми может работать PowerShell.

Удаленный сеанс будет активным до тех пор, пока вы не закроете консоль или не удалите модуль RemoteAD.

Неявное удаленное управление позволяет работать с командлетами на удаленном компьютере практически так же, как если бы они были установлены на локальной машине. При этом все необходимые командлеты всегда под рукой, что довольно удобно.

В заключение скажу, что на данный момент PowerShell Remoting является основным инструментом для удаленного управления операционными системами Windows. Поэтому знать о его возможностях и уметь ими пользоваться просто необходимо любому Windows-администратору.

Jumper — запуск скрипта на удалённом сервере

Здравствуйте уважаемые профессионалы!
Имеется проблема со скриптом при входе в терминальную сессию, а именно он не срабатывает.
Что было сделано:
Перед применением настроек logon скрипта проверил на работоспособность.
Если я запускаю приложение подключение к удаленному рабочему столу и подключаюсь к терминалу, запускаю оба скрипта с рабочего стола, эти скрипты выполняют свою задачу.

Если я запускаю ярлык RDP который создан с помощью RemoteApp и находится на рабочем столе он не срабатывает при следующих параметрах запуска.

Создал политику, сделал нацеливание на терминальный сервер, а так же создал подразделение в которое переместил терминал, связал созданную политику с данным подразделением, далее зашел:
конфигурация компьютера-политики-конфигурация windows-сценарии (запуск\завершение)-автозагрузка
Добавил туда 2 скрипта которые должны запускаться.
Далее:
конфигурация пользователя-политики-конфигурация windows-сценарий (вход\выход)-вход в систему
Добавил туда 2 скрипта которые должны запускаться.


Но когда делаю вход в терминальную сессию данные скрипты не работают(((
Пробовал по очереди ставить: с начала конф компьютера потом конф пользователя

Запуск Perl-скрипта на удаленном сервере

Можно ли запустить скрипт perl, который находится на удаленном сервере, на этом сервере из Windows? На удаленном сервере есть работа, которую я хочу делать каждый раз, когда я что-то делаю в Windows.

У вас должно быть что-то прослушивание инструкции для запуска скрипта, а затем вам нужно отправить инструкцию.

Есть много подходов, которые вы могли бы принять к этому, в том числе:

  • Запуск SSH-сервера, а затем подключение к нему из ssh-клиента на машине Windows
  • Запуск HTTP-сервера, запуск сценария через FastCGI, а затем запрос URL-адреса для него из curl или браузера на компьютере Windows
  • Запись пользовательского протокола, прослушивание сокета, а затем запись пользовательского клиента, который вы запускаете на компьютере Windows

Вы можете использовать plink для запуска команд на сервере из Windows, предполагая, что сервер работает с sshd .

Это напечатает «hi\n» на стандартный вывод.

Заменить /path/to/perl/script для echo выше и заменить hi любым аргументом командной строки, который нужен скрипту.

Одно предостерегающее личное замечание от этого много раз заключается в том, что среда, в которой будет выполняться скрипт perl, намного менее полная, чем то, что вы испытали бы при входе в систему через полный сеанс SSH и выполнение команды в интерактивном режиме. Многие переменные среды, которые вы обычно ожидаете, не установлены.

Например, с помощью команды «set | wc -l» в приведенной выше команде создается только 39 переменных среды, но из интерактивного сеанса SSH определено 57 переменных среды. Вы должны убедиться, что ваш скрипт perl не зависит от переменной среды, которая не была установлена. Например, вам может потребоваться использование полных путей для любых используемых им модулей или с помощью флага -I в строке shebang, поскольку @INC может быть не таким, каким вы ожидаете.

PowerShell. О удалённом подключении (about_Remote)

С помощью PowerShell можно выполнить удаленные команды, как на одном компьютере, так и на нескольких компьютерах. Использовать как временное, так и постоянное подключение. Можно так же запустить интерактивный сеанс с одним удаленным компьютером.

В этом разделе приводится ряд примеров, показывающих, как работать с разными типами удаленных команд. Рекомендуется так же прочесть разделы справки, которые описывают каждый командлет, который используется в статье. Эта статья представляет подробную информацию и объясняет, как можно изменять команды под ваши потребности.

Примечание: Для использования Windows PowerShell Remoting, локальные и удаленные компьютеры должны быть настроены на удаленное взаимодействие. Для получения дополнительной информации см about_Remote_Requirements.

Как начать интерактивный сеанс (ENTER-PSSESSION)

Самый простой способ выполнять удаленные команды — это начать интерактивный сеанс с удаленным компьютером.
Когда начинается сессия, команды которые вы вводите, выполняются на удаленном компьютере, как если бы вы набрали их непосредственно на удаленном компьютере. Вы можете подключиться только к одному компьютеру в каждом интерактивном сеансе.

Чтобы начать интерактивный сеанс, используйте командлет Enter-PSSession.

Следующая команда начинает интерактивный сеанс с компьютером Server01:

UNIX ssh script, запуск команд на удаленном сервере

Я хотел бы создать script, который автоматически регистрируется на удаленном сервере и захватывает файл на сервере. script уже регистрируется на сервере, однако команды не запускаются на этом компьютере. Как только я отсоединяюсь от удаленного сервера, команды запускаются на клиентской машине.

EDIT: Я не уверен, что вы заметили, но я использую соединение без пароля с удаленным сервером, используя ssh и keygeneration. Я ценю идеи, но я ищу, возможно, команды на трубе или запускать команды на удаленном сервере с помощью script на клиенте. Я понимаю, что удаленный сервер не имеет доступа к клиенту script, однако мне было любопытно, можно ли передавать команды через ssh-соединение.

Понравилась статья? Поделиться с друзьями:
Все языки программирования для начинающих