2014-05-10 25 views
-1

我有幾百個HP Onboard Administrator設備來檢查固件版本和序列號。我設法得到sshpass & SSH工作遠程登錄並運行「節目OA信息」遠程命令,沿着這些線路拉回輸出:從輸出中提取文本並轉換爲CSV

$ sshpass -p password ssh -o UserKnownHostsFile=/dev/null 
-o StrictHostKeyChecking=no [email protected]_Name1 'show oa info' 

Onboard Administrator #1 information: 
    Product Name : BladeSystem c7000 DDR2 Onboard Administrator with KVM 
    Name   : OA_Name1 
    Part Number : 456204-B21 
    Spare Part No.: 503826-001 
    Serial Number : 12345678 
    UUID   : 12345678 
    Manufacturer : HP 
    Firmware Ver. : 3.31 May 23 2011 

我希望做的是提取特定的線路和轉換CSV數據,以便我可以導出到電子表格供管理人員查看。

我已經嘗試過使用grep,sed和awk,並且迄今爲止一直失敗,我想知道是否有人可以提供一些幫助?整體輸出取決於HP軟件的版本有所不同,但它始終擁有名稱,序列號&固件版本領域

理想的情況下,這將最終類似:

Name,Serial Number,Firmware Ver, 
OA_Name1,12345678,3.31 May 23 2011, 
OA_Name2,12345678,3.31 May 23 2011, 

提前感謝。

戴夫

回答

0

篩選與awk

yourcommand | awk -F: '/Name/{n=$2} /Serial/{s=$2} /Firmware/{f=$2} END{printf "%s,%s,%s\n",n,s,f}' 

所以,如果awk看到Name,它保存在變量n第二場。如果它看到Serial,它將第二個字段保存在變量s中。如果它看到Firmware,則它將第二個字段保存在f中。最後它打印n,s,f。

-F:將字段分隔符設置爲冒號。

+0

爲什麼它將第二個字段保存在變量'n'中而不是第一個? –

+0

字段分隔符是冒號,所以它保存冒號後的所有內容,即第二行。 –

+0

我問,爲什麼它不能存儲第一個? –

1

你需要這樣嗎?

yourcommand | sed -n 's/^[ ]*\(Name\|Serial Number\|Firmware Ver.\)[ ]*:\(.*\)/\2/p' | tr '\n' ',' 
相關問題