-1

Я пишу сценарий, где мне нужно проверить учетные данные для входа на всех серверах. Это следует также проверить паролем. Я использую приведенную ниже логику, но она терпит неудачу с разрывом цикла while, когда это условие успеха

 While read line

    do

    "C:/Programfiles/putty/plink.exe" - batch -pw "password" user@$line exit 10

    var = $(echo "$?")

    If [ $var =="10"]; then
    echo "success"
    else
    echo "fail"
    fi
    done < serverlist.txt

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

1 ответ1

0

Ну, ты не сказал это сломать. В вашем условии успеха отсутствует команда break .

while ...; do
    ...
    if [ "$var" = "10" ]; then
        echo "success"
        break
   else
        echo "fail"
   fi
done

Также ваш var = $(echo "$?") вдвойне избыточно. Вы получите тот же результат с var=$? ,

(Неужели вы могли бы даже проверить $? напрямую, как в [ $? = 10 ] .)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .