Como posso fazer o snmpwalk escapar de novas linhas em sua saída?

1

Eu verifiquei a documentação, mas não consigo ver nada - alguém sabe se é possível escapar das novas linhas retornadas de alguns OIDs?

Eu preciso analisar a saída em um script e isso está me causando dores de cabeça.

Por exemplo:

$ snmpwalk -v2c -c public -Oq 10.0.0.1 1.3.6.1.2.1.1
SNMPv2-MIB::sysDescr.0 Cisco Internetwork Operating System Software
IOS (tm) Catalyst 4000 L3 Switch Software (cat4000-I5S-M), Version 12.2(18)EW4, RELEASE SOFTWARE (fc1)
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2005 by cisco Systems, Inc.
Com
SNMPv2-MIB::sysObjectID.0 SNMPv2-SMI::enterprises.9.1.502
DISMAN-EVENT-MIB::sysUpTimeInstance 122:19:10:46.16
SNMPv2-MIB::sysContact.0 012345
SNMPv2-MIB::sysName.0 name
SNMPv2-MIB::sysLocation.0 London,uk,emea

No meu código, posso analisar cada linha da saída e dividi-la no primeiro espaço, o que funciona até obter uma resposta de várias linhas, como o sysDescr OID acima. Seria ótimo se houvesse uma maneira de imprimir \ n na resposta em vez de uma nova linha real.

    
por Chris 28.10.2010 / 15:01

2 respostas

1

Você pode tentar enviar sua saída através deste script sed :

$ snmpwalk ... | sed -n '/MIB::/!{H;$g};/MIB::/{$!x;s/\n/\n/g;ta;${x;/^$/!p;x};:a;/^$/!p}'
SNMPv2-MIB::sysDescr.0 Cisco Internetwork Operating System Software\nIOS (tm) Catalyst 4000 L3 Switch Software (cat4000-I5S-M), Version 12.2(18)EW4, RELEASE SOFTWARE (fc1)\nTechnical Support: http://www.cisco.com/techsupport\nCopyright (c) 1986-2005 by cisco Systems, Inc.\nCom
SNMPv2-MIB::sysObjectID.0 SNMPv2-SMI::enterprises.9.1.502
DISMAN-EVENT-MIB::sysUpTimeInstance 122:19:10:46.16
SNMPv2-MIB::sysContact.0 012345\nfoo\nbar
SNMPv2-MIB::sysName.0 name
SNMPv2-MIB::sysLocation.0 London,uk,emea

Aqui está uma versão do AWK mais legível, mas um pouco mais longa:

$ snmpwalk ... | awk 'function printit() {printf prev; if (accum) printf "\n" accum; print ""} !/MIB::/{accum=accum "\n" $0} /MIB::/{if (NR>1) {printit()}; accum=""; prev=$0} END{printit()}'
    
por 28.10.2010 / 18:19
0
  • Tente : snmpwalk --hexOutputLength = 1024 .....
  • Ou desabilite quebras de linha : snmpwalk --hexOutputLength = 0 .....

Reference:
https://it.sourceforge.net/p/net-snmp/mailman/message/16868020/
http://net-snmp.sourceforge.net/docs/man/snmp.conf.html

    
por 18.08.2018 / 05:23

Tags