2013-12-13 141 views
0

我想清理我的shell腳本輸出存儲到本地服務器。我試圖讀取服務器列表 一個文本文件「serverlist」,並噓每個服務器以獲取命令的結果並存儲到一個文件「result_segfault」。我沒做到這一點但是每個服務器我想列出服務器的名稱,下面的輸出:執行遠程服務器兩個命令,並使用shell腳本

例子:

----------------- 
Servername 
----------------- 
Output of the command 

---------------- 
Servername2 
------------------ 
Output of the command 

這是我的代碼

#!/bin/bash 


for HOSTNAME in $(cat serverlist); 
do 

SCRIPT="cat /var/log/messages | grep 'segfault at 0000000000000098'" 

for HOSTNAME in ${HOSTNAME} ; 
do 
ssh ${HOSTNAME} "${SCRIPT}" >"result_segfault" 

done; 
done 

我沒有」 t知道如何添加服務器名稱和分隔符

回答

2
{ 
echo "----------------" 
echo "$HOSTNAME" 
echo "----------------" 
ssh "$HOSTNAME" "${SCRIPT}" 
} >>"result_segfault" 

大括號{...} group s將它們組合在一起,以便可以使用單個重定向來收集它們的標準輸出。我使用「>>」代替「>」作爲重定向,因爲它從您的示例中看出您想將每個主機的結果附加在一起,而不是每次查詢新主機時都覆蓋它。

0

隨着各種文體修復;

#!/bin/bash 

while read HOSTNAME 
do 
    ssh ${HOSTNAME} grep 'segfault at 0000000000000098' /var/log/messages 
done <serverlist >result_segfault 
相關問題