1

У меня есть доступ к машине под управлением SunOS 5.10 (называется солярис). У меня также есть доступ к машине RedHat (она называется redhat).

ssh -tt кажется, не дает мне выходных данных, если работать от соляриса до соляриса, но работает как положено иначе. От редхата до соляриса:

redhat$ </dev/null ssh -tt solaris echo ged
ged
Connection to solaris closed.

От соляриса до редхата:

solaris$ </dev/null ssh -tt redhat echo ged
tcgetattr: No such device or address
ged
Connection to redhat closed.

От соляриса к солярису:

solaris$ </dev/null ssh -tt solaris echo ged
Connection to solaris closed.

Хм ... это выглядит так, как будто команда не запущена или вывод сброшен. От соляриса к солярису:

solaris$ rm -f /tmp/ged
solaris$ </dev/null ssh -tt solaris touch /tmp/ged
solaris$ ls -l /tmp/ged
-rw-r--r--   1 tange    other          0 Aug  8 07:02 /tmp/ged

Таким образом, команда четко выполняется; это только вывод, который отбрасывается.

Как я могу получить вывод из SSH?

Фон

Вышесказанное является сущностью ошибки в GNU Parallel, и поэтому также необходимы </dev/null и -tt:

  • </dev/null потому что мы запускаем несколько команд параллельно, поэтому они не могут получить текущий tty.
  • -tt необходим, потому что иначе Ctrl-C не будет работать удаленно.

Обновить

Кажется, это связано с этой ошибкой: https://bugzilla.mindrot.org/show_bug.cgi?id=1199

Обходным решением может быть получение PTY из Perl и использование этого:

perl -MIO::Pty -e '$pty = new IO::Pty; print $t=$pty->ttyname(),"\n"; print `openssh-5.0p1/ssh -tt solaris.p echo foo < $t`'

К сожалению, IO:Pty не установлен в Solaris 5.10 и это не просто пакет Perl, но и файл .xs - поэтому для него также требуется компилятор C; поэтому не очень хорошее решение.

Таким образом, вопрос заключается в следующем: можно ли использовать SunSSH 1.1 и OpenSSH 5.0 для решения этой проблемы - возможно, с помощью Perl?

0