2013-02-01 54 views
0

我正在编写监视脚本在不同的服务器上。如何将列标题添加到csv文件

我的要求是每隔30分钟从两台服务器收集日期,合并数据并通过邮件发送。

现在,我被卡住的地方是当数据到一个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 

由于IM:本IM从2台服务器中的文件相结合,如下后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 

上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 

代码段循环所以数据将每隔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

什么是电流输出? – simpleuser

+2

问题被格式化得差不多,阅读[FAQ](http://stackoverflow.com/faq)! –

+0

如果附加信息,您只需要第一次放置标题,对吧?所以你可以做的是检查文件是否存在。如果没有,则打印标题;否则,不要。 – fedorqui

回答

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 
+0

你好William/Fedorqui,我不是覆盖数据,因为nos会每30分钟更换一次,因此每30分钟后将数据附加到同一文件。希望我这次有点清楚。 –

+0

@stuti不幸的是,您的问题中发布的代码每30分钟附加完全相同的文本。它不*每30分钟计算一次新数据。如果此解决方案不适合您,请解释原因。 –

+0

嗨威廉,即时得到低于输出:'时间戳BRM服务器 Mon Feb 4 01:11:37 PST 20136 Mon Feb 4 01:12:37 PST 20136 Mon Feb 4 01:13:38 PST 20136'我需要的是适当的时间和命令输出之间的时间间隔,即'Timestamp BRM Servers Mon Feb 4 01:11:37 PST 2013 6 Mon Feb 4 01:12:37 PST 2013 6 Mon Feb 4 01: 13:38 PST 2013 6'您能否建议如何实现?谢谢 –