일부 Linux 시스템을 다시 시작하기 위한 Linux 쉘 스크립트

일부 Linux 시스템을 다시 시작하기 위한 Linux 쉘 스크립트

나는 이전에 한 번도 해본 적이 없는 일을 하고 있습니다.

여러분 중 일부에게는 쉬울 것이라고 확신합니다 :)

네트워크에서 장치에 SSH를 연결하고 15분 간격으로 재부팅하는 Linux 쉘 스크립트를 실행해야 합니다.

나는 그것이 다음과 같이 보일 것이라고 상상합니다.

#!/bin/bash

USERNAME=someUser
HOSTS="host1 host2 host3"
SCRIPT="pwd; ls"
for HOSTNAME in ${HOSTS} ; do
    ssh -l ${USERNAME} ${HOSTNAME} "${SCRIPT}"
done

재부팅 명령에 연결하려면 SSH 연결이 필요합니다

for p in server1 server2 server3
do
  ssh ${p} sudo reboot
  sleep 900 
done

첫 번째 컴퓨터를 다시 시작한 후 15분 후에 연결하고 다시 시작해야 합니다.

답변1

이것은 기본적으로 귀하가 요청한 것입니다.

#!/bin/bash
for i in `cat ~/servers.txt`
do
    echo -n $i" "
    ssh -l sudo_user $i "sudo shutdown -r now"
    sleep 900
done

절전 모드에서는 재시작이 완료된 후 15분이 아니라 마지막 주문이 이루어진 후 약 15분 후에 재시작 명령을 실행합니다. 간단한 bash 쉘을 사용하여 필요한 작업을 수행할 수 있습니다. 서버 수가 몇 개라면 Rundeck을 사용하고, 서버가 100개 이상이라면 Ansible을 사용하는 것을 선호합니다.

이 스크립트는 sudo 사용자로 실행하는 것이 가장 좋습니다. ssh를 통해서는 말할 것도 없고 루트로 관리하지 않는 것이 가장 좋습니다. 이 작업이 원활하게 작동하려면 먼저 각 서버에서 올바른 SSH RSA 키로 사용자를 채우고 이를 sudo 그룹에 추가해야 합니다.

관련 정보