Как запустить локальные (не shell) скрипты на удаленном хосте через SSH?

Рассмотрите возможность использования тома Btrfs и просто удалите весь том для такого каталога с большим количеством файлов.

В качестве альтернативы вы можете создать файл образа FS, затем размонтировать и удалить его файл, чтобы очень быстро удалить все сразу.

6
22.03.2017, 23:24
3 ответа

ssh someHost выполнит вашу оболочку по умолчанию, которая в Turn будет выполнять команды, считанные со стандартного ввода. Поскольку вы отправляете содержимое someFile на стандартный ввод, он логически пытается выполнить содержимое someFile.

Вы не говорите нам, что должен содержать someFile. Предполагая, что его содержимое должно быть передано в ваш Perl-скрипт, вам следует сделать следующее:

cat someFile | ssh someHost your_perl_script

Или лучше:

ssh someHost your_perl_script < someFile
3
27.01.2020, 20:22

Если вы хотите отправить скрипт Perl через SSH-соединение, у вас будет для запуска интерпретатора Perl на удаленном конце. Он прочитает сценарий со стандартного ввода:

ssh remotehost perl < somescript.pl

В случае с Perl он должен даже прочитать ключи командной строки (кроме -T) из строки хэш-банга ввода.

Если вы хотите передать аргументы командной строки интерпретатору Perl, вы можете просто добавьте их в командную строку после perl. Если вы хотите передать аргументы сценарию, вам необходимо явно указать интерпретатору, чтобы он читал сценарий со стандартного ввода (в противном случае он примет первый аргумент как имя файла для поиска).

Итак, здесь -l переходит к интерпретатору, а foo и bar к сценарию:

echo 'print "> $_"  foreach @ARGV' | ssh remotehost perl -l - foo bar 

Обратите внимание, что выполнение только ssh somehost < script.sh считает, что оболочка удаленного входа совместима со сценарием. (т. е. сценарий Bash не будет работать, если удаленная оболочка окажется чем-то другим.)

11
27.01.2020, 20:22

в порядке =>

Записать локальный вывод в удаленный файл: Вы только что установили apache на свой $myhost. Теперь вы хотите проверить это.

Вы можете вывести тестовую строку в файл, только на этот раз файл находится в удаленном корневом каталоге htdocs:

echo "It works" | ssh user@your.host 'cat >> /usr/local/apache/htdocs/it_works.html'

Открыть удаленный файл с помощью less или cat: С катом:

ssh user@your.host "cat /usr/local/apache/htdocs/it_works.html"

С меньшим количеством:

ssh user@your.host "less /usr/local/apache/htdocs/it_works.html"

Удаленные файлы Grep:

С каналом:

ssh user@your.host "cat /usr/local/apache/htdocs/it_works.html" |  grep "works"

Просто удаленный grep:

ssh user@your.host "grep works /usr/local/apache/htdocs/it_works.html"

Просмотр удаленных журналов с хвостом:

Таким образом, вы можете наблюдать за доступом к apache сервер в режиме реального времени:

 ssh user@your.host "tail -f /etc/httpd/logfiles/access_log"

Источник этого ответа здесь.

0
27.01.2020, 20:22

Теги

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