![매주 목요일 보고서를 생성하는 스크립트 작성 [닫기]](https://linux55.com/image/11144/%EB%A7%A4%EC%A3%BC%20%EB%AA%A9%EC%9A%94%EC%9D%BC%20%EB%B3%B4%EA%B3%A0%EC%84%9C%EB%A5%BC%20%EC%83%9D%EC%84%B1%ED%95%98%EB%8A%94%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%20%EC%9E%91%EC%84%B1%20%5B%EB%8B%AB%EA%B8%B0%5D.png)
매주 목요일마다 18개 서버에 대해 다음 보고서를 보내야 합니다.
계정: swebwpsp 서버 이름: nykpsr17896 디스크 공간 사용량: 70% (df -kh 명령 사용) 날짜: 2018-09-20
마찬가지로 우리는 18개의 서버를 가지고 있습니다.
이것을 자동화할 수 있나요?
답변1
당신은 그것을 사용할 수 있습니다예약 된 일들일주일에 한 번 특정 요일에 작업을 실행하는 등 정기적으로 작업을 실행하세요. 서버 목록을 쿼리하는 스크립트를 작성한 다음 보고서를 저장할 수 있습니다.
crontab -e
작업을 실행하려는 사용자로 실행하십시오. 예를 들어:
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * command to be executed
0 0 * * thu /path/to/your/script
서버 목록을 읽고 SSH를 통해 명령을 실행하는 예제 스크립트:
#!/bin/sh
report="report-$(date -I)" # report file
servers="servers.txt" # file containing a list of hosts
command="df -hk" # command to execute at remote host
exec 1>$report # redirect output to report file
exec 2>&1 # stderr to stdout
while IFS= read -r server; do
echo "querying server: ${server}"
ssh -n "${server}" -- "${command}"
done < $servers