この出力の値を解析する最も適切な方法は何ですか?

この出力の値を解析する最も適切な方法は何ですか?

スクリプト中で、解析したいnetstat出力があります。以下の出力の値を解析する最も効率的な方法は何ですか?私は以前のシェルを使用していることを指摘する必要があります/bin/shbash

次のコマンドでこの出力を生成します。netstat -d -K O30S1O1

MVS TCP/IP NETSTAT CS V1R11       TCPIP Name: NCDTCP          10:12:39
DevName: OSAQO130          DevType: MPCIPA
  DevStatus: Ready         CfgRouter: Non  ActRouter: Non
  LnkName: O30S1O1           LnkType: IPAQENET    LnkStatus: Ready
    Speed: 0000001000
    IpBroadcastCapability: No
    ArpOffload: Yes                ArpOffloadInfo: Yes
    ActMtu: 8992
    VLANid: None                   VLANpriority: Disabled
    ReadStorage: GLOBAL (4096K)    InbPerf: Balanced
    ChecksumOffload: Yes           SegmentationOffload: Yes
    SecClass: 255                  MonSysplex: No
  Routing Parameters:
    MTU Size: 1500              Metric: 10
    DestAddr: 0.0.0.0           SubnetMask: 255.255.255.192
  Multicast Specific:
    Multicast Capability: Yes
    Group             RefCnt      SrcFltMd
    -----             ------      --------
    224.0.0.5         0000000001  Exclude
      SrcAddr: None
    224.0.0.1         0000000001  Exclude
      SrcAddr: None
  Link Statistics:
    BytesIn                           = 13545386
    Inbound Packets                   = 129630
    Inbound Packets In Error          = 0
    Inbound Packets Discarded         = 0
    Inbound Packets With No Protocol  = 0
    BytesOut                          = 81424019
    Outbound Packets                  = 520188
    Outbound Packets In Error         = 0
    Outbound Packets Discarded        = 0


IPv4 LAN Group Summary
LanGroup: 00006
  Name              Status      ArpOwner          VipaOwner
  ----              ------      --------          ---------
  O30S1O1           Active      O30S1O1           Yes

DevNameたとえば、、BytesInなどの複数の値を取得したいとしますBytesOut。私は毎分4つのインターフェイスでnetstatコマンドを実行し、出力をExcelにインポートするためにcsvファイルに書き込む予定です。

ベストアンサー1

解析に何を使用しても、次の形式で出力することをお勧めします。

DevName=OSAQO130
BytesIn=13545386

その後、スクリプトをその中にラップeval $(...)し、変数$DevName$BytesIn

分析perl:

netstat -d -K O30S1O1 | perl -ne '$DevName = $1 if m/DevName: (\S+)/; $BytesIn = $1 if m/BytesIn.*= (\d+)/; END {print map("$_=${$_}\n", qw/DevName BytesIn/)}'

分析sed:

netstat -d -K O30S1O1 | sed -ne 's/DevName: \([^ ]*\).*/DevName=\1/ p' -e 's/.*BytesIn.*= \([0-9]*\)/BytesIn=\1/ p'

Windowsでは、およびを含む多くのUnixツールが組み込まれているbashシェルを使用しています。gitsedperl

おすすめ記事