LINUX.ORG.RU

Не факт, что подойдёт в данном случае (зависит от содержимого функции), но вообще произвольное количество команд можно выполнить так:

#!/bin/bash
some code
....
ssh user@remhost bash << EOF
foofunc(){
command one $var1
...
command n $varn
}
foofunc
EOF
some code
xaizek ★★★★★
()

Можно иначе, вместо:

foofunc(){
command one $var1
...
command n $varn
}
Делаешь вызов:
ssh user@remhost "( var1=something; \
command one $var1; \
... \
command n $varn; \
)"

gh0stwizard ★★★★★
()
Ответ на: комментарий от Black_Shadow

Black_Shadow

Костыли-костылики. Вместо тягания кода туда-сюда у меня щас в качестве костыля просто этот содержимое функции лежит файлом на удаленном хосте и я его просто указываю в кавычках.

rusya_rr
() автор топика
Ответ на: комментарий от kdask

kdask

Читал про это, у меня почему-то не идет, надо ковырять. Просто думал, еще какие варианты есть неиспользованные.

rusya_rr
() автор топика
Ответ на: Black_Shadow от rusya_rr

Black_Shadow

И на самом деле, так не нужно даже делать,

достаточно просто сказать:

ssh user@host «имялокальногоскриптаиликоманды». Теперь твоя жизнь больше не будет прежней. Никогда.

rusya_rr
() автор топика
Ответ на: Black_Shadow от rusya_rr

И на самом деле, так не нужно даже делать,

достаточно просто сказать:

ssh user@host «имялокальногоскриптаиликоманды». Теперь твоя жизнь больше не будет прежней. Никогда.

Ты идиот?

$ ./hello_world.sh
Hello world!
$ ssh user@host ./hello_world.sh
Password: 
bash: ./hello_world.sh: Нет такого файла или каталога

Black_Shadow ★★★★★
()
Ответ на: комментарий от Black_Shadow

Откройте для себя чудесный мир авторизации по ключам, вежливых собеседников и man ssh заодно. Но быстрее напр, http://www.shellhacks.com/ru/Zapusk-Komand-na-Udalennom-Linux-Servere-cherez-SSH. И если ты, мальчик, не последний мудак, то признаешь свою неправоту, прыщавое зазнайство и извинишься. Хотя мне насрать.

rusya_rr
() автор топика
Ответ на: проверено от gh0stwizard

gh0stwizard

Не, мне нужна функция в этом же скрипте. Остальное понятно.

rusya_rr
() автор топика
Ответ на: kdask от rusya_rr

Странно. Всё функционирует как надо, если функция не завязана на какие-то внешние вещи.

  1. typeset -f foofunc
    вернёт код функции
  2. $(cat)
    прочитает этот код из пайпа и выполнит
  3. foofunc
    это уже сам вызов функции на удалённом сервере

УМВР :)

kdask
()
Ответ на: комментарий от kdask

kdask

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

rusya_rr
() автор топика

Всем спасибо

можно расходиться. завтра буду пробовать.

rusya_rr
() автор топика
Ответ на: комментарий от rusya_rr

Откройте для себя чудесный мир авторизации по ключам

Судя по этой теме, я гораздо больше тебя понимаю, как работает ssh, так что не тебе меня учить.

Но быстрее напр, http://www.shellhacks.com/ru/Zapusk-Komand-na-Udalennom-Linux-Servere-cherez-SSH

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

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

И если ты, мальчик, не последний мудак, то признаешь свою неправоту, прыщавое зазнайство и извинишься. Хотя мне насрать.

Мальчиками одноклассников называй. А за что я должен извиниться, за то, что ты идиот? И в чём моя неправота?

Единственное, о чём я жалею, так это то, что я пытался тебе помогать. Больше не буду (я тебя пометил), и другим не советую.

Black_Shadow ★★★★★
()
Последнее исправление: Black_Shadow (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.