Я пытаюсь расшифровать, как бы я попытался захватить некоторую обработку ошибок в моем пакетном скрипте 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
)
Я пробовал фрагмент кода, который вы предложили, и я обновил код, который я использую выше, однако я вижу несколько ошибок. FINDSTR: Не удается открыть logging.txt – Eddie
Я добавил еще один код фрагмента, основанный на том, что вы сказали о кодах возврата. Я думаю, что использование кодов возврата было бы достаточно. – Eddie
У вас, скорее всего, нет доступа на запись в 'C: \ Program Files (x86) \ PuTTY'. Таким образом, вывод не записывается. Вы должны использовать другой путь для файла журнала вывода. –