Контрольная сумма и труба входа одновременно - PullRequest
3 голосов
/ 11 мая 2011

Я хочу безопасно переместить большой файл с одного компьютера на другой, где он должен быть обработан перед сохранением.

Я подумал передать файл в ssh, запустив сценарий обработки.

local.example.com$ cat file | ssh remote.example.com process.sh

(Если у вас есть идеи лучше моей, пожалуйста, предложите)

В скрипте процесса я хочу проверить контрольную сумму и зашифровать файл перед его сохранением.И тут возникает проблема.

Решений может быть два:

  • конвейерный ввод в две команды (cksum и openssl);но все способы, которые я нашел, выглядели сложными и необязательными.
  • взломайте cksum, чтобы также выполнить работу в стиле кошки и распечатать результат на stderr, чтобы я мог выполнить

    cksum --pipe | openssl enc > myfile
    

    и получить контрольную сумму обратно через stderr.К сожалению, я изучил код, и мне кажется, что это трудно сделать без ущерба для производительности / буферизации;)

Может быть инструмент передачи cksumming, который делает все это,но это не пришло мне в голову.В любом случае, я хочу избежать нестандартных и сложных вещей.

Большое спасибо.

Редактировать: полезная ссылка об ответе http://www.linuxjournal.com/content/shell-process-redirection

1 Ответ

4 голосов
/ 11 мая 2011

Если вы запустите свой принимающий скрипт с cat > inputfile, который будет сожрать все STDIN до EOF, тогда ваш скрипт может выполнить любые действия, необходимые для входного файла.

Вы также можете использовать tee;

echo foo | tee >(sha1sum) >(md5sum)
d3b07384d113edec49eaa6238ad5ff00  -
f1d2d2f924e986ac86fdf7b36c94bcdf32beec15  -
...