Заметки · 24.11.2022

Массовый ребут Linux

Для работы скрипта потребуется утилита для неинтерактивной аутентификации пароля sshpass. Установить утилиту в Linux Ubuntu можно с помощью команды sudo apt install sshpass.

С необходимостью централизованной перезагрузки удалённых хостов на ОС Linux я столкнулся во время подмены видеофайла на уютном и, к сожалению, не вещательном http-медиасервере. VLC по какой-то причине не стал подхватывать вновь заменённый файл «на лету» и надо было или перезапустить плеер или выполнить sudo reboot. Мне милее последний вариант.

Итак, чтобы не подключаться ко всем хостам по очереди, был написан данный скрипт:

# Массив с IP адресами #
hosts=("192.168.1.2" "192.168.1.3" "192.168.1.4")

for host in "${hosts[@]}"
do
RESULT="64"
PING=$(ping $host -c 1 | grep 64 | awk '{print $1}')
    if [ "$RESULT" != "$PING" ]
    then
        echo "$host недоступен!"
    else
        echo "$host доступен!"
        # Требуется утилита sshpass #
        sshpass -p 'password' ssh username@$host 'sudo reboot'
        echo "Перезапускаем $host..."
    fi
done

Нужно только вписать в массив хостов свои IP адреса и заменить в обращении к sshpass пароль и имя пользователя на корректные.