Rsync над пользовательской оболочкой с fifo

Я пытаюсь использовать rsync над пользовательской оболочкой, созданной с помощью fifo. Однако я не могу найти способ справиться с этим:

Сценарий initsh для имитации стандартной оболочки по fifo:

 #!/bin/bash rm fin mkfifo fin rm fout mkfifo fout rm ferr mkfifo ferr rm farg mkfifo farg read arg <farg cat fin | /bin/bash -i -c "$arg" 1>fout 2>ferr 

Этот скрипт работает хорошо, вы можете проверить его, запустив (cat fout &) && echo ls > farg

Сценарий rsh для перехода к rsync:

 #!/bin/bash shift; cat fout & cat ferr 1>&2 & echo "$@" | tee -a out > farg cat | tee -a out > fin sleep 2 kill %% exit 

Способ вызова rsync:

 rsync -e './rsh' user@fakehost:/ 

Он работает хорошо, когда вы запускаете echo ./rsh , вы получили оболочку, такую ​​как rsync. Но когда rsync запускает его, он не закрывает stdin, и поэтому он ждет остановки (EOF) «cat | …». Я также пробовал с exec 0<>fin но он вообще не работает.

Есть ли уловка, чтобы правильно закрыть ручку? Или у вас есть другой подход?

One Solution collect form web for “Rsync над пользовательской оболочкой с fifo”

вы можете дождаться окончания команды cat fout :

 #!/bin/bash shift; cat fout & foutid=$! cat ferr 1>&2 & echo "$@" | tee -a out > farg cat | tee -a out > fin <&0 & wait $foutid sleep 2 kill %% exit 
  • Почему моя петля над выходом ls не работает?
  • Команда sftp с именем «\» в имени пользователя не работает
  • Linux: как перенаправить stdout и stderr в logger?
  • Разница между systemd и программой запуска терминала
  • Как я могу упростить эту команду только для использования awk?
  • Накопить имя файла в файле журнала, используя сценарий оболочки
  • Есть ли причина, чтобы shebang указывал на / bin / sh, а не / bin / bash?
  • Вывод сценария оболочки неправильно разбивается при передаче в качестве аргумента скрипту
  • Почему массив пуст после цикла while?
  • Разбор символа строки с bash
  • команда оболочки 'var = ""; echo $ var 'имеет выход «h», любое объяснение?
  • Interesting Posts

    Невозможно установить mysql-server-5.5 / следующие пакеты имеют неудовлетворенные зависимости

    эквивалент команды stat GNU для ksh на AIX

    Мастера марионеток: ошибка TCPServer: адрес уже используется – bind (2) – WEBrick 1.3.1

    Определяет ли shebang оболочку, которая запускает скрипт?

    Был ли скомпрометирован мой Unix-сервер?

    Как сделать «ярлык» рабочего стола, который открывает терминал, но в другом каталоге, чем дом по умолчанию?

    OEL6 Медленная загрузка && Миллионы файлов сокетов в / tmp / orbit-gdm

    Попытка открыть порт с помощью CentOS

    Не удается установить / обновить пакеты на вновь установленном CentOS

    Gnome 3 keybindings в источнике? Где ctrl-c … (вырезать, копировать и вставлять)?

    Отображать только определенные параметры в верхнем

    Leafpad игнорирует gtkrc

    Интернет медленно на Fedora 23

    Я хочу разрешить пользователю запускать * только * утилиту ping с использованием SELinux

    Почему эта строка включена в сообщение журнала «logcheck»?

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