SSH на удаленный сервер с аргументами для запуска сценариев - PullRequest
0 голосов
/ 07 июня 2018

У меня много данных, которые необходимо обработать, и у меня есть доступ к 3 отдельным удаленным серверам.Логика состоит в том, чтобы разбить данные, разбивающиеся на 3 разных сервера, вместо того, чтобы работать на одном.Обратите внимание, что все три удаленных сервера могут указывать на один каталог, где у меня есть главные сценарии для обработки всех данных.У меня проблема с переносом аргументов, когда я вызываю разные скрипты bash.

Например, у меня есть мастер-скрипт, который выглядит примерно так:

processing stuff
more stuff
# call the first script
$scriptdir/step1.csh $date $time $name

Внутри step1.csh, если у меня есть что-то очень простое, где я могу подключиться к одному из удаленныхсерверов и выводим имя хоста в текстовый файл, например:

#!/bin/bash
ssh name@hostname bash -c '
echo `hostname` > host.txt

Я получаю желаемый результат, где «host.txt» будет именем хоста желаемого подключенного имени хоста.Однако, если step1.csh выглядит следующим образом:

#!/bin/bash
mydate=$1
mytime=$2
myname=$3

ssh name@hostname bash '
echo `hostname` > host.txt
echo ${mydate} > host.txt

Я получаю сообщение об ошибке, говорящее, что «mydate: undefined variable»

Кроме того, если я что-то делаю в следующем формате:

#!/bin/bash
mydate=$1
mytime=$2
myname=$3
ssh name@hostname "python /path/to/somewhere/to/run/${mydate}/and/${mytime}

Он по-прежнему работает на локальном, а не на удаленном сервере.Что мне здесь не хватает?

1 Ответ

0 голосов
/ 07 июня 2018

Итак, первая часть:

#!/bin/bash
mydate=$1
mytime=$2
myname=$3

ssh name@hostname bash '
echo `hostname` > host.txt
echo ${mydate} > host.txt

Решение:

#!/bin/bash
mydate=$1
mytime=$2
myname=$3

ssh -T name@hostname << EOF
echo `hostname` > host.txt
echo ${mydate} > host.txt
EOF

Тем не менее, у меня все еще возникают проблемы, когда я пытаюсь запустить скрипт Python на удаленном компьютере.сервер;он всегда запускается на локальном сервере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...