Каковы требования gnu-parallel к удаленному устройству, с которым можно связаться по ssh (и аутентификация с открытым ключом)?

Каковы требования gnu-parallel к удаленному устройству, с которым можно связаться по ssh (и аутентификация с открытым ключом)?

Я использую gnu-parallel.

Я предполагаю, что проблема связана с моей средой.

Чего я хочу добиться:
Пытаюсь выполнить команду на нескольких машинах.
Для этого я создал sshloginfile (подходящее название ~/.parallel/sshloginfile) с некоторыми записями типа:

#  define hostgroup debian
@debian/5-1.p
@debian/6-1.p
@debian/7-1.p
...
#  define hostgroup qnap with only 1 cpu
1/@qnap/4-1.a
#  define hostgroup macos
@macos/33-1.w
#  local computer
@macos/:

Имена (5-1.p, 6-1.p, ...) за группами хостов (@debian, @qnap, ...) являются записями в ~/.ssh/config. Все соединения ssh аутентифицируются с помощью аутентификации открытого ключа.

Я хотел бы увидеть время безотказной работы с помощью простой команды:

parallel --jobs 0 --nonall --tag --slf .. uptime

работает прекрасно

:   19:25  up 4 days, 23:02, 3 users, load averages: 2.14 1.86 1.79
5-1.p    19:25:27 up 23 days, 18:54,  0 users,  load average: 0.05, 0.13, 0.18
6-1.p    19:26:04 up 20:05,  0 users,  load average: 0.03, 0.08, 0.10
4-1.a   sh: line 0: exec: perl: not found

за исключением одного хоста (4.1-a), который представляет собой систему хранения данных QNAP.

К моему удивлению, команданетиспользуя sshloginfile, но вместо этого напрямую обращаясь к этому серверуделаетработа:

parallel --jobs 0 --nonall --tag ssh 4-1.a uptime

выходы:

19:28:37 up 16 days,  8:24, load average: 0.72, 0.61, 0.59

Итак, похоже, что есть зависимость/предпосылка, которая должна быть выполнена, если устройство адресуется через sshloginfile, что в противном случае не является необходимым. И это, похоже, perl, который на самом деле не установлен в системе хранения QNAP.
Кто-нибудь знает, почему так?

Версия параллельного: GNU parallel 20181222
версия ОС хоста: Darwin 18.2.0 Версия ядра Darwin 18.2.0: Пн Ноя 12 20:24:46 PST 2018; root:xnu-4903.231.4~2/RELEASE_X86_64 x86_64 [macOS 10.14.2]
версия ОС рабочих устройств: Linux 4.14.90+ #1183 Пт Дек 21 13:50:04 GMT 2018 armv6l версия ОС GNU/Linux
"проблемного" устройства 4-1.a: Linux 3.4.6 #1 Ср Янв 2 07:02:07 CST 2019 armv5tel неизвестно

Приложение: На странице руководства указано:
ЗАВИСИМОСТИ
GNU parallel использует Perl и модули Perl Getopt::Long, IPC::Open3, Symbol, IO::File, POSIX и File::Temp. Для удаленного использования он также использует rsync с ssh.

rsync установлен на «проблемном» устройстве.

решение1

С 20150122 GNU Parallel зависел от perlустановки на удаленной системе.

То, что вы видите, наводит меня на мысль, что на qnapсервере не установлен Perl.

Если вы запустите:

parallel -vvS server echo ::: foo
parallel -vvS server --wd ...  --trc {}.foo touch {}.foo ::: *

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

Более подробную информацию об этом читайте здесь:https://www.gnu.org/software/parallel/parallel_design.html#The-remote-system-wrapper

Я предполагаю, что:

parallel -S 1/4-1.a echo ::: foo

также приведет к:

sh: line 0: exec: perl: not found

Поэтому, вероятно, решением будет установить Perl на qnap.

Связанный контент