Скрипт для проверки беспарольного соединения между серверами - PullRequest
0 голосов
/ 10 октября 2018

У меня есть следующий скрипт.Мое требование: если я дам имя пользователя и IP-адрес, сценарий должен проверить, имеет ли сервер-хост соединение без пароля с данным сервером.

script.sh

#!/bin/sh
echo "Enter username"
read user
echo "Enter IP address"
read ip
echo "Enter condition"
read conditon
if [ $condition == "test" ]
then
        ssh -o 'PreferredAuthentications=publickey' $user@$ip "echo"
fi

Приведенный выше сценарий проверяет наличиеподключение без пароля и выходы.Я хочу, чтобы скрипт возвращал «success», если соединение есть, или «No connection», если между хостами нет соединения без пароля.

Спасибо.

1 Ответ

0 голосов
/ 10 октября 2018

Вы можете задать дополнительную опцию для ssh, которая устанавливает его в BatchMode

BatchMode Если установлено yes, запрос пароля или пароля будетбыть отключенным.Эта опция полезна в сценариях и других пакетных заданиях, где нет ни одного пользователя для ввода пароля.Аргумент должен быть yes или no (по умолчанию).

источник: man sshconfig

Следующеестрока вернет запрошенный код ошибки

ssh -oBatchMode=yes user@server echo  > /dev/null 2>&1

. Она вернет 0, если сможет войти в систему, и вернет ненулевое значение (255), если не удастся войти.

Таким образом, вы можете сделать что-то вроде:

ssh -oBathMode=yes "${user}@${server}" echo > /dev/null 2>&1 && echo "Success" || echo "No Connection"

Или вы даже можете позволить серверу ответить на Success как

ssh -oBathMode=yes "${user}@${server}" echo Success  2>/dev/null || echo "No Connection"
...