Как использовать SSH для запуска сценария оболочки на удаленной машине?

Я отредактировал ответ @ Ivan, чтобы отобразить изображение «Без предварительного просмотра», если это не изображение:

function readURL(input) {
    var url = input.value;
    var ext = url.substring(url.lastIndexOf('.') + 1).toLowerCase();
    if (input.files && input.files[0]&& (ext == "gif" || ext == "png" || ext == "jpeg" || ext == "jpg")) {
        var reader = new FileReader();

        reader.onload = function (e) {
            $('.imagepreview').attr('src', e.target.result);
        }

        reader.readAsDataURL(input.files[0]);
    }else{
         $('.imagepreview').attr('src', '/assets/no_preview.png');
    }
}
1128
задан alpha_989 20 April 2018 в 00:58
поделиться

9 ответов

Во-первых, скопируйте сценарий в Машину B использование [user@machineA] $ scp

scp/path/to/script user@machineB:/home/user/path

Затем просто выполните сценарий

[user@machineA] $ ssh user@machineB "/home/user/path/script"

, Это будет работать при предоставлении исполняемого разрешения сценарию.

-23
ответ дан 2 revs, 2 users 94% 20 April 2018 в 00:58
поделиться
<hostA_shell_prompt>$ ssh user@hostB "ls -la"

, Который предложит Вам пароль, если Вы не скопировали свой открытый ключ пользователя хосты в authorized_keys файл на доме пользовательского каталога .ssh's. Это будет допускать passwordless аутентификацию (если принято как подлинный метод на конфигурации ssh сервера)

100
ответ дан Vinko Vrsalovic 20 April 2018 в 00:58
поделиться

Принятие Вас означает, что Вы хотите сделать это автоматически от "локальной" машины, вручную не входя в "удаленную" машину, необходимо изучить расширение TCL, известное, как Ожидают, это разработано точно для этого вида ситуации. Я также предоставил ссылку на сценарий для входа в систему/взаимодействия через SSH.

https://www.nist.gov/services-resources/software/expect

http://bash.cyberciti.biz/security/expect-ssh-login-script/

9
ответ дан George Jempty 20 April 2018 в 00:58
поделиться

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

Это ловило меня в прошлом.

, Например:

user@host> ssh user2@host2 "echo \$HOME"

распечатывает/home/user2

, в то время как

user@host> ssh user2@host2 "echo $HOME"

распечатывает/home/user

Другой пример:

user@host> ssh user2@host2 "echo hello world | awk '{print \$1}'"

распечатывает "привет" правильно.

233
ответ дан dogbane 20 April 2018 в 00:58
поделиться

Можно использовать runoverssh:

sudo apt install runoverssh
runoverssh -s localscript.sh user host1 host2 host3...

-s выполнения локальный сценарий удаленно

Полезные флаги:
-g используют глобальный пароль для всех хостов (подсказка единого пароля)
-n использование SSH вместо sshpass, полезного для аутентификации с открытым ключом

0
ответ дан nowat 14 September 2019 в 16:35
поделиться

Если Машина A - это компьютер Windows, вы можете использовать Plink (часть PuTTY ) с параметром -m, и он будет выполнять локальный сценарий на удаленном сервере.

plink root@MachineB -m local_script.sh

Если Машина A является системой на основе Unix, вы можете использовать:

ssh root@MachineB 'bash -s' < local_script.sh

Вам не нужно копировать сценарий на удаленный сервер для его запуска.

1154
ответ дан 19 December 2019 в 20:15
поделиться
ssh user@hostname ".~/.bashrc;/cd path-to-file/;.filename.sh"

настоятельно рекомендовал получить файл среды (.bashrc/.bashprofile/.profile). прежде, чем работать что-то в удаленном хосте, потому что цель и источник размещают переменные среды, может быть, задерживают.

2
ответ дан 19 December 2019 в 20:15
поделиться
cat ./script.sh | ssh <user>@<host>
1
ответ дан 19 December 2019 в 20:15
поделиться

Попробуйте запустить ssh user @ удаленный sh ./script.unx[1131827ght.

10
ответ дан 19 December 2019 в 20:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: