
-»šj8  ã               @   s£  d  Z  d d l Z d d l Z d> d? d@ dA dB dC dD dE dF dG dH dI dJ dK dL dM g Z d# d$ d% d& d' d( d) d* d+ d, d- d. d/ d0 i Z d# d1 d% d2 d' d3 d) d4 i Z dN Z d5 Z d' Z d# Z	 d6 d7 „  Z
 d8 d9 „  Z e d: k rŸe e j ƒ d) k  r
e d; ƒ e j d# ƒ d d< l m Z e e j ƒ d) k r<e j d) n d Z e e j d# e e j d% ƒ e j d' ƒ Z e e e e ƒ ƒ e j e d= r˜d n d# ƒ d S)Oz�
Consulta un SAI Delta InsightPower por SNMP.
Pide los OIDs en lotes dentro del mismo paquete: 2 viajes en vez de 16.
Compatible Python 3.5 (sin f-strings).
é    NÚmodeloú1.3.6.1.2.1.33.1.1.2.0Únombreú1.3.6.1.2.1.33.1.1.5.0Úfuenteú1.3.6.1.2.1.33.1.4.1.0Ú
estado_batú1.3.6.1.2.1.33.1.2.1.0Úsegs_en_bateriaú1.3.6.1.2.1.33.1.2.2.0Úminutos_restú1.3.6.1.2.1.33.1.2.3.0Úcarga_bat_pctú1.3.6.1.2.1.33.1.2.4.0Útension_batú1.3.6.1.2.1.33.1.2.5.0Útemp_batú1.3.6.1.2.1.33.1.2.7.0Ú
fallos_redú1.3.6.1.2.1.33.1.3.1.0Ú	v_entradaú1.3.6.1.2.1.33.1.3.3.1.3.1Ú	f_entradaú1.3.6.1.2.1.33.1.3.3.1.2.1Úv_salidaú1.3.6.1.2.1.33.1.4.4.1.2.1Ú	carga_pctú1.3.6.1.2.1.33.1.4.4.1.5.1Ú
potencia_wú1.3.6.1.2.1.33.1.4.4.1.4.1Úalarmasú1.3.6.1.2.1.33.1.6.1.0é   ZOtraé   z
Sin salidaé   zRed (normal)é   ZBypassé   ZBATERIAé   ZBoosteré   ZReducerZDesconocidoZNormalZBAJAZAGOTADAé   c             C   s*  d j  |  | ƒ } d d d | d d t t ƒ d t t ƒ | g
 t | ƒ } y t j | d t j ƒ} Wn t j t	 f k
 r‰ d	 SYn X| j
 d
 d ƒ j ƒ  } t | ƒ t | ƒ k r¾ d	 Sg  } x_ | D]W }	 |	 j ƒ  j d ƒ }
 |
 sd |
 k sd |
 k r| j d	 ƒ qË | j |
 ƒ qË W| S)zBUn solo snmpget con varios OIDs. Devuelve lista de strings o None.z{0}:{1}Zsnmpgetz-v2cz-cz-Oqvz-tz-rÚstderrNzutf-8Úreplaceú"zNo SuchZTimeout)ÚformatÚstrÚTIMEOUTÚ
REINTENTOSÚlistÚ
subprocessZcheck_outputZSTDOUTZCalledProcessErrorÚOSErrorÚdecodeÚ
splitlinesÚlenÚstripÚappend)ÚhostÚpuertoÚ	communityZoidsZdestinoÚcmdZsalidaZlineasZlimpiasZlineaZtexto© r=   údelta_status.pyÚ_snmpget_lote0   s"    +	r?   c             C   sö  d |  d | d d i } i  } x¥ t  d t t ƒ t ƒ D]‹ } t | | t … } t |  | | d d „  | Dƒ ƒ } | d  k r’ d  g t | ƒ } x- t | | ƒ D] \ \ } }	 }
 |
 | | <q¢ Wq7 Wx‡ t D] \ } }	 | j | ƒ } | d  k rd  | | <qÍ y& t | ƒ }
 | t k r&|
 d }
 Wn t	 k
 rA| }
 Yn X|
 | | <qÍ W| j d	 ƒ d  k	 | d <t
 j | j d	 ƒ d
 ƒ | d <t j | j d ƒ d
 ƒ | d <| j d	 ƒ d k | d <| j d	 ƒ d k | d <| j d ƒ d k | d <| S)Nr9   r:   ÚokFr   c             S   s   g  |  ] \ } } | ‘ q Sr=   r=   )Ú.0Z_cZoidr=   r=   r>   ú
<listcomp>O   s   	 zleer_sai.<locals>.<listcomp>g      $@r   ú?Z
fuente_txtr   Zestado_bat_txtr&   Z
en_bateriar%   Z	en_bypassr$   Zbat_critica)r$   r%   )Úranger6   ÚCLAVESÚLOTEr?   ÚzipÚgetÚintÚDECIMASÚ
ValueErrorÚFUENTEÚ
ESTADO_BAT)r9   r:   r;   ÚdatosZcrudosÚiZtrozoZvaloresZclaveZ_oidZvalorZcrudor=   r=   r>   Úleer_saiH   s:    "
rP   Ú__main__z;uso: delta_status.py <host> <puerto> <community> [etiqueta])Úformatear_telegramr@   )r   r   )r   r   )r   r   )r   r	   )r
   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r    r!   )r   r   )Ú__doc__r2   ÚsysrE   rL   rM   rJ   rF   r/   r0   r?   rP   Ú__name__r6   ÚargvÚprintÚexitZformatorR   ZetiquetarI   rN   r=   r=   r=   r>   Ú<module>   sH   	#
(-