Отправить стандартный вывод SCP на экран и STDERR в файл

Существует много разговоров о том, как перенаправить как out, так и err при использовании SCP или просто сам стандартный вывод, но мне любопытно, знает ли кто-нибудь, как перенаправить стандартный вывод в файл, в то время как стандартный вывод продолжает выводиться на экран.

В настоящее время, если мы перенаправим stderr следующим образом:

scp user@XXXX:*.txt  . 2>errfile.txt

На стандартный вывод ничего не выводится, а в errfile.txt фиксируются только ошибки и эхо-сигналы.


person Univ426    schedule 23.07.2012    source источник
comment
Хм, это именно то, что вы сделали. stdout (информация о ходе выполнения) выводится на ваш терминал, а stderr отправляется в файл errfile.txt. Кстати, вам лучше защитить звезду в первом аргументе от расширения: \*.txt. В противном случае оно будет расширено до имен файлов на компьютере, на котором вы работаете, что вряд ли вам нужно.   -  person fork0    schedule 24.07.2012
comment
Я пробовал это: scp user@XXX:/$PATH/test*. 2> /tmp/test , с клиентом openssh, и он работает, я скопировал все файлы на sdout и в файлы /tmp/test с отказом в разрешении. Sh -> клиент dash и ssh: OpenSSH_5.3p1 Debian-3ubuntu7, OpenSSL 0.9.8k 25 марта 2009 г.   -  person Duffydake    schedule 27.07.2012


Ответы (1)


Вот как это будет работать

MPBAB:work anj$ cat test.sh
echo "Hello there"
echo "This is a test script"

badcommand
MPBAB:work anj$ ./test.sh 2> err.log
Hello there
This is a test script
MPBAB:work anj$ cat err.log
./test.sh: line 4: badcommand: command not found

Как видите, когда test.sh пытается вызвать badcommand, выдается ошибка. Однако два оператора echo работают просто отлично и отображаются в STDOUT, а STDERR регистрируется в err.log.

Теперь реализуйте то, как вы пытались -

MPBAB:work anj$ ./test.sh . 2>err.log
Hello there
This is a test script
MPBAB:work anj$ cat err.log
./test.sh: line 4: badcommand: command not found

Работает так же. В вашем случае я вынужден думать, что команда scp, которую вы выдаете, неверна. scp нужны source и destination. Что-то вроде этого (где я хочу scp test.txt на удаленный сервер)

MPBAB:work anj$ scp ./test.txt [email protected]:/home/data 2>scperr.txt
[email protected]'s password: #<this is because I dont have the public key installed>
test.txt              100%  291     0.3KB/s   00:00    
MPBAB:work an$ cat scperr.txt
MPBAB:work anj$ 

Итак, вы видите, что файл скопирован, и он показал test.txt 100% 291 0.3KB/s 00:00 в STDOUT, а так как ошибок не было, scperr.txt был пуст.

person AnBisw    schedule 09.08.2012