如果您在每台计算机上都有一个密钥,并且您的监测主机可以登录ssh remotehost
,那么您就有了收集所需信息所需的全部功能。
#!/bin/bash
servers=(wopr gerty mother)
fmt="%s\t%s\t%s\n"
printf "$fmt" "Host" "UIDs" "Highest"
printf "$fmt" "----" "----" "-------"
count='awk "END {print NR}" /etc/passwd' # avoids whitespace problems from `wc`
highest="awk -F: '\$3>n&&\$3<60000{n=\$3} END{print n}' /etc/passwd"
for server in ${servers[@]}; do
printf "$fmt" "$server" "$(ssh "$server" "$count")" "$(ssh "$server" "$highest")"
done
结果对我来说:
$ ./doit.sh
Host UIDs Highest
---- ---- -------
wopr 40 2020
gerty 37 9001
mother 32 534
注意,这使得两个SSH连接到每个服务器收集每个数据。如果您想更有效地做到这一点,你可以捆绑的信息集成到一个稍微复杂的收集脚本:(相同的结果)
#!/usr/local/bin/bash
servers=(wopr gerty mother)
fmt="%s\t%s\t%s\n"
printf "$fmt" "Host" "UIDs" "Highest"
printf "$fmt" "----" "----" "-------"
gather="awk -F: '\$3>n&&\$3<60000{n=\$3} END{print NR,n}' /etc/passwd"
for server in ${servers[@]}; do
read count highest < <(ssh "$server" "$gather")
printf "$fmt" "$server" "$count" "$highest"
done
啊!我怎么错过scp :(我可以不用密码就做scp,把这个脚本推送到所有远程服务器的/ tmp目录并运行ssh来执行它们......多数民众赞成在提醒我 – Satish
如果你打算在每个系统上安装东西无论如何,为什么不能一路走下去并使用像Munin这样的完整工具呢?您可以添加自定义信息,随着时间的推移绘制您的结果图,如果主机变得无法访问,则设置通知。监控很好。:-)有说明在[在Munin文档中]使用yum在Linux系统上安装Munin(http://munin-monitoring.org/wiki/LinuxInstallation#InstallationonCentOS5)。 – ghoti