0

さまざまなサーバーで監視スクリプトを作成中です。

私の要件は、両方のサーバーから 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

この後、以下のように 2 つのサーバーからのファイルを結合します。

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
4

1 に答える 1

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 
于 2013-02-01T16:08:08.280 に答える