每个星期四我们必须为 18 台服务器发送如下报告
帐户:swebwpsp 服务器名称:nykpsr17896 磁盘空间使用率:70 %(我们使用 df -kh 命令)日期:20-09-2018
同样我们有 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