我正在不同服务器上编写监控脚本。
我的要求是从服务器每30分钟收集一次日期,合并数据并通过邮件发送。
现在,我遇到的问题是在将数据发送到csv文件时,我需要添加无法执行的列标题。
srv1上的代码段
#!/bin/bash
EAI=`netstat | grep 16001 | wc -l`
Date=`date`
DM=`psme | grep -i DM_EAI | wc -l`
while true; do
echo $Date $EAI
sleep 1800 done > eai_js_srv1.csv
while true; do
echo $Date $DM
sleep 1800 done > dm_eai_srv1.csv
srv2上的代码片段
#!/bin/bash
EAI=`netstat | grep 16001 | wc -l`
Date=`date`
DM=`psme | grep -i DM_EAI | wc -l`
while true;
do echo $Date $DM sleep 1800
done > eai_js_srv2.csv
while true;
do echo $Date $EAI sleep 1800
done > dm_eai_srv2.csv
此后我将两台服务器的文件合并如下:
join -a1 -a2 eai_js_srv1.csv eai_js_srv2.csv > eai_js_counts.csv
join -a1 -a2 dm_eai_srv1.csv dm_eai_srv2.csv > dm_eai_counts.csv
由于我正在使用while循环,所以数据会在每30分钟附加到同一个文件,所以现在我需要所需的输出:
eai_js_counts.csv:
Timestamp BRM Servers
611 610
1/28/2013 02:00 AM PST 176 99
1/28/2013 06:00 AM PST 150 115
dm_eai_counts.csv:
Timestamp BRM Servers
611 610
1/28/2013 02:00 AM PST 4 5
1/28/2013 06:00 AM PST 4 5
答案 0 :(得分:0)
#!/bin/bash
F=eai_js_srv2.csv
D=dm_eai_srv2.csv
cat > $F << EOF # Write a header to the file $F
Timestamp BRM Servers
611 610
EOF
cat > $D << EOF # Write a header to the file $D
Timestamp BRM Servers
611 610
EOF
# Write data every 1800 seconds.
while sleep 1800; do
exec >> $F # Direct output to file $F
date | tr '\n' ' '
netstat | grep 16001 | wc -l
exec >> $D # Direct output to $D
date | tr '\n' ' '
psme | grep -i DM_EAI | wc -l
done