У меня есть список серверов:
cat list.txt
10.10.10.10 servera
10.11.10.10 serverb
Как я могу проверить, могу ли я войти через ssh к ним или нет? Я имею в виду, что по умолчанию я должен быть в состоянии войти через ssh key auth .., так что вкратце, мне нужно решение, которое сортирует строки (серверы) в list.txt следующим образом:
- серверы, на которые я могу войти через ключ ssh
- серверы, запрашивающие пароль (конечно, пароль неизвестен ..)
- серверы, которые недоступны
ping
не очень хороший показатель. Существует множество настроек, которые разрешаютssh
соединения, но не отвечают на эхо-запросы.Ответы:
Вы можете сделать это с помощью комбинации
BatchMode
опции и «разбора» вывода. (ssh
всегда возвращает 255, если по какой-либо причине не удается подключиться, поэтому вы не можете использовать код возврата для различения типов сбоев.)При
BatchMode
включенном состоянии не запрашивается пароль или другое взаимодействие, поэтому подключение, для которого требуется пароль, не будет выполнено. (Я также вставилConnectTimeout
туда, который должен быть настроен в соответствии с вашими потребностями. И выбрал действительно плохие имена файлов.)Вы можете обнаружить другие типы ошибок (например, отсутствие открытого ключа сервера), если вам нужна более подробная классификация. Если вам нужны результаты в одном отсортированном файле, просто
cat
объедините различные выходные файлы, как считаете нужным.источник
Посмотрите различные инструменты, которые автоматизируют выполнение команд на нескольких хостах через ssh. Например, с Муссом :
Массаж выходной по мере необходимости.
Примечание: почему вы храните IP-адреса в
list.txt
? Имен серверов достаточно. Если имена, которые вы хотите использовать, не являются именами DNS, используйтеHost
директивы в~/.ssh/config
.источник
Ожидайте, будет предоставлять вход для ваших интерактивных команд. Клиент ssh с флагом -v сообщит вам, какие методы аутентификации принимает сервер. Если вы попадаете в интерактивное приглашение, сделайте так, чтобы оно прекратилось. Делай, что хочешь, у тебя есть все, что тебе нужно.
То же самое, одна команда, чтобы управлять ими всеми, и в темноте, связать их ... Гул.
источник
Команда mussh будет выводить только ошибки, поэтому вы можете просто запустить ее без отладки.
источник