我有几百个HP Onboard Administrator设备来审核固件版本和序列号。我已成功获得sshpass& ssh工作远程登录并运行"显示信息"远程命令,它沿这些行拉回输出:
$ sshpass -p password ssh -o UserKnownHostsFile=/dev/null
-o StrictHostKeyChecking=no logon@OA_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软件的版本而有所不同,但它始终具有名称,序列号和序列号。固件Ver字段
理想情况下,它最终会类似于:
Name,Serial Number,Firmware Ver,
OA_Name1,12345678,3.31 May 23 2011,
OA_Name2,12345678,3.31 May 23 2011,
非常感谢提前。
戴夫
答案 0 :(得分:1)
你需要这样吗?
yourcommand | sed -n 's/^[ ]*\(Name\|Serial Number\|Firmware Ver.\)[ ]*:\(.*\)/\2/p' | tr '\n' ','
答案 1 :(得分: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:
将字段分隔符设置为冒号。