Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  5 2135
Hei freaks,

Jeg har plutselig behov for å hente ut og presentere 3-5 verdier fra snmp fra et par hundre enheter. Nå kjører jeg snmpwalk i et enkelt bash-script og outputer til en tekstfil, men hadde vært greit å fått det i en web-tabell og oppdatert en gang i timen eller noe slikt. Det beste hadde vært om det fantes noe fiks ferdig jeg kan bruke, hvis det ikke finnes så hadde jeg satt pris på om noen kan peke meg i riktig retning. Hvor begynner jeg? Er ingen programmerer, men finner ut av det meste bare jeg vet hvor jeg skal begynne. Hvilke verktøy/biblioteker/rammeverk bruker jeg for å få til dette?

Takk for evt. hjelp.
Hva med å bare mekke statisk html i bash-scriptet ditt, kjøre det i en cronjob og hive en enkel http-server på boksen?
Mar Josua
commie's Avatar
Trådstarter
Det er absolutt en mulighet!

Tar fortsatt imot tips om noen har en mer elegant løsning.
m0b
m0b's Avatar
DonorAdministrator
Hva med mrtg?
Det å walke alle gangene du skal vise noe, i hvertfall uten noen oid spesifisering kan ta drøyt lang tid om du plukker data fra switcher og routere så anbefaler å være mer spesifikk i hva en henter i hvertfall
Kan rask skrive ned noe,så kan du se om du får brukt noe eller får noen ideer.

Kode

import csv

# Simualte a simple file with SNMP output
data = '''\
hrPartitionSize.1537.1 = INTEGER: 14877060 KBytes
hrPartitionSize.1537.2 = INTEGER: 9920624 KBytes
hrPartitionSize.1537.3 = INTEGER: 0 KBytes'''.split('\n')

with open('snmp.csv', 'w', newline='') as outcsv:
    writer = csv.writer(outcsv)
    writer.writerow(['Partion', 'KBytes'])
    for line in data:
        a, b = line.split(' = INTEGER: ')
        writer.writerow([a, b])
Output snmp.csv:

Kode

Partion,KBytes
hrPartitionSize.1537.1,14877060 KBytes
hrPartitionSize.1537.2,9920624 KBytes
hrPartitionSize.1537.3,0 KBytes
Til html table bruker her Tablib

Kode

# pip install tablib
import tablib

dataset = tablib.Dataset()
with open('snmp.csv') as f:
    dataset.csv = f.read()
    print(dataset.html)
Output vil være CodePen

Presentere data i schedule fra et lokalt setup:
Bruker her schedule

Kode

import webbrowser
# pip install schedule
import schedule, time
# pip install tablib
import tablib

def show_html():
    dataset = tablib.Dataset()
    with open('snmp.csv') as f,open('snmp.html', 'w') as f_out:
        dataset.csv = f.read()
        #print(dataset.html)
        f_out.write(dataset.html)
        webbrowser.open_new_tab('snmp.html')

if __name__ == '__main__':
    schedule.every(1).minutes.do(show_html)
    while True:
        schedule.run_pending()
        time.sleep(1)
Server setup med Flask

Kode

from flask import Flask, render_template
import tablib
import os
 
app = Flask (__name__)
dataset = tablib.Dataset()
with open(os.path.join(os.path.dirname(__file__),'snmp.csv')) as f:
    dataset.csv = f.read()
 
@app.route("/")
def index():    
    return dataset.html    
 
if __name__ == "__main__":
    app.run()
For mer kontroll som f.eks plassering og utsende(CSS) kan sende html table(dataset.html) inn eg index.html
med Jinja2(bygd inn i Flask).