Как экспортировать функцию в ударе по ssh?

На LXDE ~/.config/openbox/lxde-rc.xml конфигурация используется вместо этого.

Чтобы проверить, как openbox был запущен, можно сделать:

$ ps ax | grep openbox
 2109 ?        S      0:29 openbox --config-file /home/marcin/.config/openbox/lxde-rc.xml
2
02.12.2013, 20:02
4 ответа

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

function myfunc() {
    echo $1
}        
export -f myfunc
parallel --env myfunc -S server 'myfunc abc' ::: bar

Существует часть в учебном руководстве об этом.

Функция переадресации функции удара с - ENV была доступным запуском с parallel версия 20130722.

3
27.01.2020, 22:06
  • 1
    Да, я знаю, но это не работает на меня, когда я пробую его в ударе. Я каждый раз получаю "удар: строка 2: команда, не найденная". –  MaVe 02.12.2013, 22:09
  • 2
    Необходимо обновить вопрос с тем, что Вы на самом деле вводите в удар а не половину законченного сценария, который не показывает то, что Вы делаете с параллелью. (как ни с чем не сравнимое это не будет работать). –  Zelda 02.12.2013, 22:14
  • 3
    я обновляю ответ с полными 5 строками, которые работают, если вырезано и вставлено в удар. Единственной вещью, которую необходимо изменить, является "сервер" к имени сервера (или login@servername) –  Zelda 02.12.2013, 22:16
  • 4
    Если я пробую Ваш предложенный код, я все еще добираюсь> удар: строка 2: myfunc: команда, не найденная –  MaVe 02.12.2013, 22:49
  • 5
    Если Вы смотрите в файле НОВОСТЕЙ в параллельном гну распределении, можно считать, что - ENV может передать функции удара, запускающиеся с параллельных 20130722. Необходимо обновить! –  Zelda 03.12.2013, 10:01

не уверен, что это работает для всех случаев, это немного непослушно:

function remote-function() {
   local param1=$1
   echo $param1
}
ssh_connection=someone@somewhere
echo $(type remote-cleanup | tail -n+2 | sed 's#^}#; }#g')'; remote-function hello '  | ssh ${ssh_connection} bash
0
27.01.2020, 22:06

Вы можете использовать что-то подобное,

файл myfunc.sh

function myfunc() {
    echo $1
} 

Затем укажите функцию в своей оболочке, например,

source myfunc.sh

Затем вы можете выполнить «myfunc» на удаленном узле, например,

ssh user@ip "$(declare -f myfunc; myfunc 'cmdlinearg' )"

, где «cmdlinearg» - это значение 1-й переменной командной строки, которое должно отображаться в функции.

Ссылочный URL: https://www.youtube.com/watch?v=uqHjc7hlqd0 ближе к концу

0
27.01.2020, 22:06

Это должно работать, если ваша среда не очень большая:

#!/bin/bash

myvar="This is my var: "
alias myecho=echo

function myfunc() {
    myecho $myvar $1
}        

env_parallel -S server myfunc ::: a b c
0
27.01.2020, 22:06

Теги

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