#!/bin/bash
echo "FC_HOST | PortID | WWN | State | Speed "
echo "------------+------------+--------------------+------------+----------"
for hba in `ls -d /sys/class/fc_host/host*`;do
FC_HOST=`basename $hba`
PortID=`cat $hba/port_id`
wwpn=`cat $hba/port_name`
state=`cat $hba/port_state`
speed=`cat $hba/speed`
hba=`cat $hba/symbolic_name`
echo "$FC_HOST| $PortID | $wwpn | $state| $speed" | awk 'BEGIN{OFS=FS="|"}{for(i=1;i<=NF;i++){$i=sprintf("%-12s",$i)};print}'
done #|sort -k3n,6
echo "------------+------------+--------------------+------------+----------"
The output looks like this
FC_HOST | PortID | WWN | State | Speed
------------+------------+--------------------+------------+----------
host0 | 0xffffffff | 0x20003890a540876c | Linkdown | unknown
host11 | 0xffffffff | 0x20003890a540876d | Linkdown | unknown
host12 | 0x640000 | 0x100000109b1bbe00 | Online | 32 Gbit
host13 | 0xffffffff | 0x20003890a5803461 | Linkdown | 40 Gbit
host14 | 0xffffffff | 0x20003890a5803462 | Linkdown | 40 Gbit
host15 | 0x640000 | 0x100000109b1bbe01 | Online | 32 Gbit
host16 | 0x03eac0 | 0x100000109b1b9a77 | Online | 16 Gbit
host17 | 0x04eac0 | 0x100000109b1b9a78 | Online | 16 Gbit
------------+------------+--------------------+------------+----------
If you would like more detail I added a couple more columns to show make, model, firmware, and driver version. This is a fixed width column layout and the minimum column width can be adjusted for your needs.
#!/bin/bash
echo "FC_HOST | PortID | WWN | State | Speed | Make | Model | Firmware | Driver"
echo "----------------+----------------+--------------------+----------------+----------------+----------------+----------------+----------------+---------------"
for hba in `ls -d /sys/class/fc_host/host*`;do
FC_HOST=`basename $hba`
PortID=`cat $hba/port_id`
wwpn=`cat $hba/port_name`
state=`cat $hba/port_state`
speed=`cat $hba/speed`
hba=`cat $hba/symbolic_name`
hba_make=`echo $hba | cut -f1 -d ' ' `
hba_model=`echo $hba | cut -f2 -d ' ' `
hba_fw=`echo $hba | cut -f3 -d ' ' `
hba_driver=`echo $hba | cut -f4 -d ' ' `
echo "$FC_HOST| $PortID | $wwpn | $state| $speed | $hba_make | $hba_model | $hba_fw | $hba_driver " | awk 'BEGIN{OFS=FS="|"}{for(i=1;i<=NF;i++){$i=sprintf("%-16s",$i)};print}'
done #|sort -k3n,6
echo "----------------+----------------+--------------------+----------------+----------------+----------------+----------------+----------------+---------------"
The output looks similar to this:
![](data:image/png;base64,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)
If you would like more detail I added a couple more columns to show make, model, firmware, and driver version. This is a fixed width column layout and the minimum column width can be adjusted for your needs.
#!/bin/bash
echo "FC_HOST | PortID | WWN | State | Speed | Make | Model | Firmware | Driver"
echo "----------------+----------------+--------------------+----------------+----------------+----------------+----------------+----------------+---------------"
for hba in `ls -d /sys/class/fc_host/host*`;do
FC_HOST=`basename $hba`
PortID=`cat $hba/port_id`
wwpn=`cat $hba/port_name`
state=`cat $hba/port_state`
speed=`cat $hba/speed`
hba=`cat $hba/symbolic_name`
hba_make=`echo $hba | cut -f1 -d ' ' `
hba_model=`echo $hba | cut -f2 -d ' ' `
hba_fw=`echo $hba | cut -f3 -d ' ' `
hba_driver=`echo $hba | cut -f4 -d ' ' `
echo "$FC_HOST| $PortID | $wwpn | $state| $speed | $hba_make | $hba_model | $hba_fw | $hba_driver " | awk 'BEGIN{OFS=FS="|"}{for(i=1;i<=NF;i++){$i=sprintf("%-16s",$i)};print}'
done #|sort -k3n,6
echo "----------------+----------------+--------------------+----------------+----------------+----------------+----------------+----------------+---------------"
No comments:
Post a Comment