コマンドからciscoデバイスの合計を取得したいとし、次device ID
のファイルにターミナル出力があります。Serial Number
show inventory
show inventory
NAME: "1", DESCR: "WS-C3750G-12S"
PID: WS-C3750G-12S-E , VID: V06, SN: FDO1129Z9ZJ
NAME: "GigabitEthernet1/0/1", DESCR: "1000BaseLX SFP"
PID: , VID: , SN: H006K022
NAME: "GigabitEthernet1/0/2", DESCR: "10/100/1000BaseTX SFP"
PID: GLC-T , VID: , SN: 00000MTC1444080Z
NAME: "GigabitEthernet1/0/3", DESCR: "1000BaseLX SFP"
PID: , VID: , SN: H006K083
NAME: "GigabitEthernet1/0/4", DESCR: "1000BaseLX SFP"
PID: , VID: , SN: H006K021
NAME: "GigabitEthernet1/0/5", DESCR: "1000BaseSX SFP"
PID: , VID: , SN: FNS11190FLE
NAME: "GigabitEthernet1/0/6", DESCR: "1000BaseSX SFP"
PID: , VID: , SN: P7K08UQ
NAME: "GigabitEthernet1/0/7", DESCR: "1000BaseLX SFP"
PID: , VID: , SN: H006K032
NAME: "GigabitEthernet1/0/8", DESCR: "1000BaseLX SFP"
PID: , VID: , SN: H006K040
NAME: "GigabitEthernet1/0/9", DESCR: "1000BaseLX SFP"
PID: , VID: , SN: FNS14420533
NAME: "GigabitEthernet1/0/10", DESCR: "1000BaseLX SFP"
PID: GLC-LH-SMD , VID: V86, SN: FNS16361SG0
NAME: "GigabitEthernet1/0/11", DESCR: "1000BaseLX SFP"
PID: GLC-LH-SMD , VID: V86, SN: FNS174002FT
NAME: "GigabitEthernet1/0/12", DESCR: "1000BaseLX SFP"
PID: GLC-LH-SMD , VID: V86, SN: FNS183503FS
Barragan_3750>
SN
次のように、「1」というデバイスとdevice name
「>」の後にデバイスをインポートしたいと思います。
Barragan_3750
SN: FDO1129Z9ZJ
よろしくお願いします。
ベストアンサー1
GNUの使用sed
:
$ show inventory | sed -n '/^NAME: "1"/,+1s/^.*, //p'
DESCR: "WS-C3750G-12S"
SN: FDO1129Z9ZJ
編集スクリプトは、その行で始まるsed
行を見つけてNAME "1"
置換を適用し、すぐに次の最初の行を適用します。
置換は、最後のカンマ(および次のスペース)までの行のすべての内容を削除します。結果の文字列が端末に印刷されます。
シーケンス番号と出力の最後の行だけが必要な場合:
$ show inventory | sed -n -e '/^NAME: "1"/{n;s/^.*, //p}' -e '$p'
SN: FDO1129Z9ZJ
Barragan_3750>
ここでsed
スクリプトは以前と同じ行を見つけましたが、すぐに次の行を読み(使用n
)、その行で以前と同じ置換を実行します。これによりシリアル番号が提供されます。
次に、入力した最後の行も印刷します。