Qual é a maneira mais apropriada de analisar valores desta saída?

1

Eu tenho alguma saída netstat que estou escrevendo e quero analisar. Qual é a maneira mais eficiente de analisar valores da saída abaixo? É importante ressaltar que estou usando o antigo /bin/sh shell e não bash

Estou gerando essa saída do comando: 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

Por exemplo, digamos que eu queira buscar vários valores, como DevName , BytesIn e BytesOut . Eu planejo executar o comando netstat a cada minuto ou mais em quatro interfaces e gravar a saída em um arquivo csv para importar para o Excel.

    
por conorgriffin 08.08.2012 / 13:29

1 resposta

3

Independentemente do que você analisar, recomendo exibir neste formato:

DevName=OSAQO130
BytesIn=13545386

porque assim você pode colocar o script em eval $(...) e se preparar para usar as variáveis $DevName e $BytesIn .

Analisando com 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/)}'

Analisando com sed :

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

No Windows eu uso o shell bash que vem com git , ele tem muitas ferramentas unix incluindo sed e perl .

    
por 08.08.2012 / 14:50