【发布时间】:2017-05-11 14:13:14
【问题描述】:
我有一个脚本可以从多个服务器获取服务器运行状况,如下所示:
#!/bin/bash
for ip
do
ssh 192.168.1.209 ssh root@$ip cat /proc/loadavg | awk '{print $1}' #CPU Usage
free | grep Mem | awk '{print $3/$2 * 100.0}' #Memory Usage
df -khP | awk '{print $3 "/" $2}' | awk 'FNR == 2' #Disk Space
df -kihP | awk '{print $3 "/" $2}' | awk 'FNR == 2' #Inode Space
date +'%d %b %Y %r %Z' #Datetime
ps -eo user,pid,pcpu,pmem,args|sort -nr -k3|head -5 #Process
done
209 在我的网络上就像一个门户,所以我必须首先通过 ssh 连接到它才能访问其他服务器。通过在终端上输入以下命令:
./my_script.sh 192.168.1.210 192.168.1.211 192.168.1.212
我想从每个服务器获取每个命令输出(ps、date 等)。 2 个服务器的预期输出应该是这样的:
0.11 #health from server 1
4.82577
1.7G/49G
46K/49M
27 Dec 2016 05:34:57 PM HKT
root 93 0.0 0.0 [kauditd]
root 9 0.0 0.0 [rcuob/0]
root 8740 0.0 0.0 ifstat --scan=100
root 829 0.0 0.0 /usr/sbin/wpa_supplicant -u -f /var/log/wpa_supplicant.log -c /etc/wpa_supplicant/wpa_supplicant.conf -u -f /var/log/wpa_supplicant.log -P /var/run/wpa_supplicant.pid
0.00 #health from server 2
4.82422
1.7G/49G
46K/49M
27 Dec 2016 05:34:57 PM HKT
root 93 0.0 0.0 [kauditd]
root 9 0.0 0.0 [rcuob/0]
root 8740 0.0 0.0 ifstat --scan=100
root 829 0.0 0.0 /usr/sbin/wpa_supplicant -u -f /var/log/wpa_supplicant.log -c /etc/wpa_supplicant/wpa_supplicant.conf -u -f /var/log/wpa_supplicant.log -P /var/run/wpa_supplicant.pid
我面临的问题是它似乎只从一台服务器获取健康信息。这是为什么?是因为我不能像这样进行 SSH 吗?我正在使用 PHP exec() 函数来执行脚本 btw,以进一步格式化并将其显示在我的本地页面上。
【问题讨论】:
-
哦,我忘了说,209 就像我网络上的一个门户。我只能从 209 ssh 到 210,211 等。所以我实际上是先 ssh 到 209
-
我该怎么做?我已经给出了我所有的代码
标签: php bash shell ssh scripting