2015-11-12 11 views
1

Я пытаюсь расшифровать, как бы я попытался захватить некоторую обработку ошибок в моем пакетном скрипте Windows для кода возврата из моей команды Plink, такой как «Access Denied» с сервера что означает, что у меня нет доступа к нему, что означает, что мне нужно получить к нему доступ.Ошибка при обработке плинка с помощью командного файла Windows

Вот код:

@echo on 

SET userid=root 
SET passwd=Welcome1%% 

for /f "delims=" %%i in ('type "ipaddress.txt" ') do (
pushd "C:\Program Files (x86)\PuTTY" 
echo(======================================== 
plink.exe -pw %passwd% %userid%@%%i hostname 
echo(======================================== 
popd 
) 

Обновленный код:

@echo on 

SET "userid=root" 
SET "passwd=Welcome1%%" 

for /f "delims=" %%i in ('type "ipaddress.txt" ') do (
pushd "C:\Program Files (x86)\PuTTY" 

plink.exe -pw %passwd% %userid%@%%i hostname 2> logging.txt 

type "logging.txt" 

findstr /C:"Access denied" "logging.txt" 

if errorlevel 1 (
    echo Connected 
) else (
    echo Rejected 
) 
popd 
) 

Я ищу распечатать доступы, которые вход успешно и первый для цикла достигает этого приятно. То, что я хочу обеспечить, - это захват отказа в доступе, а не печать IP-адреса хоста, с которым он потерпел неудачу, но после продолжения его обработки через список IP-адресов.

На основании приведенных ниже деталей, приведенных я даже попытался такую ​​установку кода, чтобы держать его просто основано на простом выходе O или 1 код:

@echo on 

SET "userid=root" 
SET "passwd=Welcome1%%" 

for /f "delims=" %%i in ('type "ipaddress.txt" ') do (
pushd "C:\Program Files (x86)\PuTTY" 

echo(================== 
plink.exe -pw %passwd% %userid%@%%i hostname 

if ERRORLELVEL 1 (
    echo %%i - Rejected 
    echo(================== 
) else (
    echo %%i - Connected 
    echo(================== 
) 
popd 
) 

ответ

0

Plink возвращает либо код завершения 0 для успеха или 1 для отказ. Поэтому вы не можете использовать код выхода для проверки определенного типа ошибки.

Хотя вы можете использовать findstr command для поиска конкретного сообщения об ошибке в выводе ошибки Plink.

plink.exe -pw %passwd% %userid%@%%i hostname 2> errors.txt 

type errors.txt 

findstr /C:"Access denied" errors.txt 

if errorlevel 1 (
    echo Success or different error 
) else (
    echo Access denied 
) 
+0

Я пробовал фрагмент кода, который вы предложили, и я обновил код, который я использую выше, однако я вижу несколько ошибок. FINDSTR: Не удается открыть logging.txt – Eddie

+0

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

+0

У вас, скорее всего, нет доступа на запись в 'C: \ Program Files (x86) \ PuTTY'. Таким образом, вывод не записывается. Вы должны использовать другой путь для файла журнала вывода. –