Avatar billede vollaz Nybegynder
07. februar 2005 - 13:52 Der er 6 kommentarer og
1 løsning

Beregning af nedetid, på baggrund af en txt fil

Hejsa

Jeg har fået til opgave at generere en nedetidsrapport over nogle routere.
Jeg har følgende information at beregne ud fra :

iedub02ro21.mydomain.dk 177.66.141.82 01/27/05 11:29:31 'LAN' 'IF down'
iedub02ro20.mydomain.dk 172.96.141.81 01/27/05 11:31:11 'LAN' 'IF down'
iedub02ro21.mydomain.dk 177.66.141.82 01/27/05 11:31:11 'LAN' 'IF up'
iedub02ro20.mydomain.dk 172.96.141.81 01/27/05 11:35:27 'LAN' 'IF up'

Resultatet skulle gerne præsenteres i et excel ark.

Jeg har været igang med at se om jeg lige hurtigt kunne lave det ved at optage nogle macroer i Excel, dog uden det store held.

Håber der lige er én der har et par guldkort jeg kan starte op på.
Avatar billede bertelbrander Praktikant
07. februar 2005 - 20:18 #1
Hvordan skal resultatet se ud?
Det letteste er nok at lave et lille python script, er det en mulighed?
Avatar billede vollaz Nybegynder
07. februar 2005 - 22:44 #2
Det skal bare præsenteres som tid hver router har været nede :
F.eks. : iedub02ro20.mydomain.dk - Downtime 1h15m34s
Jeg aner intet om python :P
Avatar billede bertelbrander Praktikant
07. februar 2005 - 23:01 #3
Python er et script sprog. Det skal instaleres på de PC'er (eller Linux box eller ...) hvor det skal køres. Det er gratis og kan downloades fra:
http://www.python.org/

Jeg prøver at strikke noget sammen.
Avatar billede bertelbrander Praktikant
08. februar 2005 - 01:13 #4
Jeg fik noget strikket sammen i python.
Du instalerer python og gemmer koden nedenfor i en fil med .py som extension.

Så kører du scriptet med navnet på data filen som input, og bruger > til at pipe output til en fil, f.ex: read.py test.dat >test.out

Linien  "Diff = CurrentTime -  TimeStore[idx]" udregner nedetiden i sekunder, ud fra denne tid laves en streng (Text) som udskrives. words[0] er "iedub..." og words[1] er ipaddressen som en streng.

import os, time
import string
import sys
import array
from operator import *

class ObjectClass :
  def __init__(self, aName, aStartTime) :
      Name = aName
      StartTime = aStartTime

if sys.argv[1:] :
  in_file = open(sys.argv[1])
else :
  print "You must specify an input filename"
  sys.exit()

TimeStore = array.array('L')
AddrStore = array.array('L')
while 1:
  line = in_file.readline()
  if not line :
      sys.exit()
  words = line.split()
  mode = words[6].replace("\'", "")
  DS = words[2].split('/')
  TS = words[3].split(':')
  DT = (int(DS[2]), int(DS[0]), int(DS[1]), int(TS[0]), int(TS[1]), int(TS[2]), -1, -1, -1)
  CurrentTime = time.mktime(DT);
  IpAddrStr = words[1].split('.')
  IpAddr = int(IpAddrStr[0]) << 24
  IpAddr += int(IpAddrStr[1]) << 16
  IpAddr += int(IpAddrStr[2]) << 8
  IpAddr += int(IpAddrStr[0])

  if mode == "down" :
      TimeStore.append(long(CurrentTime))
      AddrStore.append(IpAddr)
  else :
      if AddrStore.count(IpAddr) :
        idx = AddrStore.index(IpAddr)
        Diff = CurrentTime -  TimeStore[idx]
        Text = words[0]
        Text +=" - Downtime "
        Text +=str(int(Diff/60/60))
        Text +="h"
        Text +=str(mod(int(Diff/60),60))
        Text +="m"
        Text +=str(mod(int(Diff),60))
        Text +="s"
        print Text
        AddrStore.pop(idx)
        TimeStore.pop(idx)
      else :
        print "Not Found: ", words[1]
Avatar billede vollaz Nybegynder
08. februar 2005 - 07:59 #5
Jeg prøver lige at tjekke det ud...
Under alle omstændigheder smid et svar så får du sq point for indsats.
Avatar billede vollaz Nybegynder
08. februar 2005 - 08:15 #6
read.py", line 31, in ?
IpAddr = int(IpAddrStr[0]) << 24
ValueError: invalid literal for int(): eetal01ro01

Resten ser ud til at virke .. jeg får bare nogle beskeder :
Not Found:  192.168.64.2
Not Found:  192.168.64.3
Not Found:  192.168.64.2
Not Found:  192.168.153.1
Not Found:  192.168.153.1
Not Found:  192.168.153.1
Not Found:  192.168.153.1

Betyder det at der ikke var nogen "up" for pågældende router ?
Avatar billede vollaz Nybegynder
22. februar 2005 - 08:41 #7
Du må lige skrive Bertel, hvis du vil have nogle point
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester