Захватить сообщение об ошибке подключения к файлу

Я использую Plink в Windows для подключения к сетевому устройству и записи вывода в файл. Эта часть отлично работает.

Вот пример командной строки, которую я вставляю в пакетную программу.

plink.exe -v -l [username] -pw [password] [ip address] -m "c:\empty.txt" < "c:\commands.txt" > "c:\command_output.txt"

command_output.txt содержит только вывод ssh-сеанса.

Я хочу добавить некоторую обработку ошибок, например, если он не может подключиться. Я не могу понять, как получить сообщения о подключении для перехода в файл. Они переходят только в командное окно. Я попытался использовать start / c cmd.exe из другой пакетной программы и перенаправить этот вывод в другой файл журнала. Пробовал использовать 2> & 1. Я ничего не получаю. Он всегда просто переходит в командное окно.

Вот и пример того, что я хочу запечатлеть.

Looking up host "xxx.xxx.xxx.xxx"
Connecting to xxx.xxx.xxx.xxx port 22
Failed to connect to xxx.xxx.xxx.xxx: Network error: Connection timed out
Network error: Connection timed out
FATAL ERROR: Network error: Connection timed out

person Don Thompson    schedule 17.02.2016    source источник
comment
Я заставил его работать. Просто нужно было подобрать правильную комбинацию. Я поместил команду plink в отдельную пакетную программу и использовал call, чтобы запустить ее из другой пакетной программы, перенаправил вывод в файл и должен был использовать 2 ›и 1 для включения STDERR. Что-то вроде беспорядка, но это работает.   -  person Don Thompson    schedule 17.02.2016
comment
Возможный дубликат перенаправления stdout и stderr в один файл   -  person Martin Prikryl    schedule 17.02.2016
comment
Второй командный файл вам не нужен. Но учтите, что порядок перенаправления имеет значение. Это правильно: > "c:\command_output.txt" 2>&1, но это не сработает: 2>&1 > "c:\command_output.txt" (поскольку он сначала перенаправляет вывод ошибки на стандартный вывод по умолчанию, что на данный момент является консолью)   -  person Martin Prikryl    schedule 17.02.2016


Ответы (1)


Итак, чтобы подвести итог, используйте команду ниже. Я включаю предложение @Martin Prikryl в ответ, чтобы он выглядел как ответ.

plink.exe -v -l [username] -pw [password] [ip address] -m "c:\empty.txt" < "c:\commands.txt" > "c:\command_output.txt" 2>&1
person WinTakeAll    schedule 18.02.2016
comment
@ Дон, это работает для вас без необходимости в дополнительном командном файле? В таком случае отметьте ответ как принятый. Вот почему это того стоит. - person WinTakeAll; 23.02.2016