Попытайтесь запустить не саму программу, но сценарий, запускающий эту программу, и регистрирующийся это - вывод STDERR и среда.
Также необходимо было посмотреть в журналы веб-сервера.
Я полагаю, что Вы могли сделать что-то вроде этого:
$ cat archive.tar.gz | ssh server2 "tar zxvf -"
Если необходимо управлять каталогом, где он извлечен к на server2:
$ cat archive.tar.gz | ssh server2 "cd /path/to/dir; tar zxvf -"
Учитывая Вы находитесь на Солярисе, Ваша версия tar, вероятно, не будет включать ни одной из функций сжатия, которые предлагает tar GNU. Бойтесь не, можно все еще сделать эту команду, мы просто должны анализировать кошку archive.tar.gz
в команду, которая может сначала распаковать tarball.
Что-то вроде этого должно сделать:
$ cat archive.tar.gz | ssh server2 "(cd /some/dir; gunzip | tar xf -)"
Или это:
$ gzip -dc < sample.tar.gz | ssh server2 "cd /path/to/dir; tar xvf -"
Или это:
$ gunzip sample.tar.gz | ssh server2 " cd /path/to/dir; tar xvf -"
ssh server2 < archive.tar.gz
Вы не передаете команды ssh
, таким образом, это выполняет оболочку на удаленной стороне. Содержание archive.tar.gz
передаются той оболочке на ее стандартном входе, таким образом, она пытается проанализировать его как сценарий оболочки. Веселье может последовать, или не, в зависимости от содержания файла.
Не ясно в Вашем описании, куда Вы выполняете эти команды. Если Вы находитесь на server1, имеете archive.tar.gz
на server1, и хотят извлечь архив на server2, затем передать архив по каналу к server2 и выполнить команду извлечения туда.
<archive.tar.gz ssh server2 'cd /home && gunzip | tar -xf -'
С другой стороны, войдите в систему server2, смонтируйте файловую систему server1 по sshfs и распакуйте архив точно так же, как Вы распаковали бы локальный файл.
mkdir /tmp/server1
sshfs server1:/ /tmp/server1
cd /home
gunzip </tmp/server1/path/to/archive.tar.gz | tar -xf -
fusermount -u /tmp/server1
Вы можете расширить архив в определенную существующую директорию без использования команды cd
следующим образом:
$ cat archive.tar.gz | ssh server2 "tar zxvf - -C /path/to/dir"
Если вы не знаете, выходит ли директория, вы можете использовать это:
$ cat archive.tar.gz | ssh server2 "mkdir -p /path/to/dir && tar zxvf - -C /path/to/dir"
tar
не понимаетx
флаг. Так любое использованиеgtar
(Tar GNU), если это установлено, или лучшее использованиеtar
иgunzip
. – Marco 11.09.2013, 10:32cat archive.tar.gz | ssh server2 "(cd /some/dir; gunzip; tar xf -)"
– Marco 11.09.2013, 10:48