Прямой stderr в файл по ssh

Я пытаюсь выполнить команду на локальном компьютере и направить stderr на удаленный компьютер поверх ssh. Я не могу

ssh remote machine "command 2>stderr.log" 

потому что удаленный компьютер не имеет правильного построения для выполнения команды, и мне нужно запустить команду на моем локальном компьютере. Я еще не пробовал, но я в основном уверен, что мы не можем сделать 2>ssh local machine /dir/stderr.log ?

2 Solutions collect form web for “Прямой stderr в файл по ssh”

Как я понимаю, вы хотите запустить команду локально, но сохраните вывод stderr в файл удаленного журнала.

Попробуйте заменить процесс :

 local_command 2> >(ssh somemachine 'cat >logfile') 

Здесь >(...) является заменой процесса . Он создает файл-подобный объект из команды в parens. Итак, 2> перенаправляет stderr на этот файл-подобный объект, в результате чего вывод сохраняется на удаленном компьютере.

Или просто используйте обычное перенаправление:

 { local_command 2>&1 1>&3 | ssh somemachine 'cat >logfile'; } 3>&1 

Здесь stderr перенаправляется на stdout, чтобы мы могли передать его в ssh. Так что stdout не переходит в ssh, мы перенаправляем его на дескриптор файла 3. В конце команды дескриптор файла 3 перенаправляется на stdout, чтобы он отображался на терминале.

Если вам не нужно отслеживать stderr процесса во время его работы, вы можете использовать временный локальный файл, например

 #!/bin/bash tmpfile=`mktemp` trap '/bin/rm -f $tmpfile ; exit' 0 1 2 3 15 run_command 2> $tmpfile if [ -s $tmpfile ] then scp $tmpfile remoteserver:logfile fi exit 0 

Если вам нужны «живые» данные, тогда у вас проблемы с буферизацией; отправка stderr над ssh не может быть буферизированной, и поэтому вся эта концепция может быть не лучшим способом ее выполнения.

  • Выход находится в консоли, но не является частью stdout или stderr
  • Остановить выполнение, когда что-то написано в stderr
  • неожиданный вывод с помощью grep
  • Как перенаправить ошибку в файл?
  • Почему не «cvs --help | меньше работы?
  • Как включить &> / dev / null по умолчанию для всех команд sh / bash?
  • Печать stderr только в том случае, если в stdout ничего не записано, иначе распечатайте только stdout, отбрасывая stderr
  • Stderr сценариев оболочки с трубкой не всегда отображается
  • Должен ли я выводить имя программы при возникновении предупреждения или ошибки?
  • Перенаправить bash stdout + stderr в один файл и stderr в другой файл
  • Различные сообщения об ошибках при использовании разных строк в терминале
  • Как перенаправить unzip -v вывод в файл журнала в сценарии оболочки
  • Interesting Posts

    Использование ~ / .ssh / authorized_keys для пользователей без полномочий root?

    Почему это пока не работает в Ubuntu?

    Как сервер OpenVPN назначает IP-адреса клиента в случае многоклиентной конфигурации?

    Установка системы Ubuntu 12.04 c ++

    Как запустить скрипт на fstab mount не удалось и попробуйте еще раз? Как исключение обработки

    perl one liner + как соответствовать IP-адресу, который находится в поле файла first / sec

    Добавить столбцы в текстовый файл с заданным интервалом в Bash

    Как использовать md5sum для контрольной суммы с файлом md5, который не содержит имя файла

    контролировать изменения разрешения файлов

    Временно переопределить системный пакет

    Можно ли восстановить файлы после некорректного отключения?

    Как сжимать изображения с помощью тримажа?

    Каковы плюсы и минусы отключения раздела подкачки, если ОЗУ достаточно большая?

    Как заставить дисплей заснуть, когда экран заблокирован?

    Проблемы с make и opencv

    Linux и Unix - лучшая ОС в мире.