2013-08-03 54 views
0

我想創建一個shell腳本來獲取100個服務器的服務器狀態並將詳細信息加載到一個表中。最初,我創建了一個參數文件,其中包含所有服務器,然後我通過ssh連接這些服務器並運行df -k。 ssh密鑰已經設置好了。 我面臨的問題是,我無法將服務器名稱與結果相關聯,我想將服務器名稱添加爲df -k輸出的列。 此外,輸出格式無法加載到表中,因爲沒有分隔符或製表符或空格格式正確加載。我曾嘗試sed &各種其他選項,但沒有運氣。Unix的Df -k以csv格式輸出

#!/bin/ksh 
PARMFILE=/opt/sdw/scripts/db_scripts/server_stats.txt 

value=$(<server_list1.txt) 
echo "$value" 
sourceservers=`grep =/opt/sdw/scripts/db_scripts/server_stats.txt |cut -d= -f2` 

#Input array passed as parameter file to the script 
set -A array_value $value 
vLen=${#array_value[@]} 
echo $vLen 

for((j=0; j<$vLen; j++)) 
do 
#echo "${array_value[$j]}" 
#ssh -q "${array_value[$j]}"; df -k 
ssh -q "${array_value[$j]}" 'df -h' >> df.out 
ssh -q "${array_value[$j]}" df -h | column -t >> df1.out 
ssh -q "${array_value[$j]}" df -k | tr -s " " | sed 's/ /, /g' | sed '1 s/,//g' | column -t >> df3.out 
[[ ! $? = 0 ]] && echo Failure, errno $?, cannot connect to host "${array_value[$j]}" >> sshfailed.list 
done 

輸出

文件系統大小用可用已用% 安裝在 的/ dev /映射器/ vg00中-lvol3 1.5G 434M 923M 32%

希望的輸出

文件系統,大小,使用,可用,使用%,裝載,服務器名稱 /dev/ma pper/vg00-lvol3,1.5G,434M,923M,32%,/ br724

回答

0

"${array_value[$j]}"置於像$server這樣的變量中以便更好地閱讀。

然後在sed中,進行替換,如sed "s/Mounted on/Mounted on $server/g"