Gå til innhold
🎄🎅❄️God Jul og Godt Nyttår fra alle oss i Diskusjon.no ×

Logge mengden av trafikk på en lokal IP


Anbefalte innlegg

Quote:


On 2002-04-05 11:06, xeon skrev:

Hva er forskjellen på ipchains og iptables?


 

iptables er etterfølgeren til ipchains.

ipchains kom var ny i linux 2.2

iptables er ny i linux 2.4

 

iptables er bedre på mange måter da den har mer funksjonalitet

og bedre "logikk".

Lenke til kommentar
Videoannonse
Annonse

Kansje smart å holde oss til iptables å enkel scripting i dette tilfellet... er ikke alle som kan / gidder å programere og styre får å få resultatet på en webbside som oppdaterer seg selv etter 15 min. Dette er IKKE spydig ment, det ser veldig proft ut det her Dj_offset, men tror ikke det er en fult så avansert løsning A_B_C er ute etter her.

 

Noen som har en ide??, vart faktisk litt nyskjerrig selv jeg...

Lenke til kommentar

Quote:


On 2002-04-05 13:15, oskar1 skrev:

Kansje smart å holde oss til iptables å enkel scripting i dette tilfellet... er ikke alle som kan / gidder å programere og styre får å få resultatet på en webbside som oppdaterer seg selv etter 15 min. Dette er IKKE spydig ment, det ser veldig proft ut det her Dj_offset, men tror ikke det er en fult så avansert løsning A_B_C er ute etter her.


Noen som har en ide??, vart faktisk litt nyskjerrig selv jeg...





 

Men hvis man virkelig vil ta vare på dataene over reboot og logge bruk med tidspunkt må en nesten til med databaseprogrammering (evt kan en bruke flate tekstfiler). I mitt tilfelle har jeg bare et shellscript som kjøres av cron, og at shellscriptet skriver en html side er trivielt å få til (man echo).

For moro skyld la jeg til ting funksjoner for å se om hver enkelt host er oppe (svarer på ping) og evt om de kjører samba (for å detecte OS).

- Unødvendig men trivielt.

 

Hvis noen er interresert kan jeg godt poste shellscriptene mine.

Og når det gjelder båndbredde-grafen øverst så er den tilsvarende

lik den som er på http://www.kernel.org/.

Lenke til kommentar

Ja, kunne da vært litt interessant å sett hvordan du gjør det.

Er ikke så veldig inne på det med scripting, men skal lære det etter kvart.

 

Vist du orker å poste dem så hadde det vært fint.

 

Driver mye med linux og nettverk og føler jeg kommer litt til kort med scripting... har du noen gode bøker eller howtoer å annbefale??

 

 

På forhånd takk!

 

mvh

 

Oskar

Lenke til kommentar

Her er cron-jobben som genererer tabellen:

(Bruker quote)

 

 

Quote:


#!/bin/csh -f


# Dette er litt grisete.

# Jeg bruker forresten c-shell istedet for bash (ikke STORE forskjeller

# men...)


# lese inn en fil med hosts i array

set hosts = `cat /home/httpd/bin/chains`


echo "<table border=1>"

echo "<tr><td>Host</td><td>Status</td><td>OS</td><td>Samba</td><td>Downloaded</td><td>Uploaded</td><td>Download speed</td><td>Upload speed</td></tr>"


foreach host ( $hosts )


set online = "0"


set alive = `fping $host | awk '{ print $3 }'`

set stat = " "

if ("$alive" == "unreachable") then

set stat = "<img src='/img/offline.png' height=32>"

set online = "0"

else

set stat = "<img src='/img/online.png' height=32>"

set online = "1"

endif


echo "<tr><td>$host</td><td>"


echo $stat


echo "</td><td>"

if ("$online" == "1") then

switch ( `/home/httpd/bin/security/os $host` )

#switch ( `echo "unknown"` )

case "windows":

echo "<img src='/img/windows.png'>"

breaksw

case "linux":

echo "<img src='/img/linux.png'>"

breaksw

case "unknown":

echo "??"

breaksw

default :

# unknown operatingsystem (this should not happen)

echo "?"

endsw

echo "</td><td>" # then the samba tab

echo `/home/httpd/bin/security/samba $host`

else

# don't display anything in the os-field if the computer doesn't reply to pings.

echo " </td><td> "

endif


# Classic er routeren min, så denne ignorerer vi.

if ("$host" != "classic") then

echo "</td><td>"

echo `/home/httpd/bin/bw/account_in $host` # ip in

echo "</td><td>"

echo `/home/httpd/bin/bw/account_out $host` # ip out

echo "</td><td>"


# les byte counters

set DLS = `/home/httpd/bin/bw/bytes_in $host`

set ULS = `/home/httpd/bin/bw/bytes_out $host`


# beregn gjennomsnittlig hastighet for det siste kvarteret

echo `expr $DLS / 1024 / 900 ` # packets in

echo "KB/s</td><td>"

echo `expr $ULS / 1024 / 900 ` # packets out

echo "KB/s</td></tr>"

else

echo "</td>"

echo "<td>-</td><td>-</td>"

echo "<td>-</td><td>-</td>"

echo "</td></tr>"

endif

end


echo "</table>"

# echo "<em>Last updated: `date +%h %d %Y, %H:%M` </em>"


# nullstill byte countere

/sbin/ipchains -Z


 

Så var det bytes_in, bytes_out, packets_in og packets_out scriptene

Disse må tilpasses et hvert system uansett og er nesten identiske så

jeg viser bare bytes_in scriptet her:

 

Quote:


#!/bin/sh

/sbin/ipchains -nvxL | grep $1 | awk '{ print $2 '} | head -n 2 | tail -n 1


 

OS detection script:

 

Quote:


#!/bin/csh -f


# This script detects if a remote host on a network is a linux host or a windows host

# by using samba and nmap

#



set windows = False

set linux = False

set conclution = False


if ("$1" == "") then

echo "Usage: os ip"

exit 1

endif


set samba = `/home/httpd/bin/security/samba $1`;



# samba test

if (`echo $samba | grep -i win` != "") then

set windows = True

set conclution = True

endif

if (`echo $samba | grep -i unix` != "") then

set linux = True

set conclution = True

endif



if ($conclution == True) then

if ($windows == True) then

echo "windows"

else if ($linux == True) then

echo "linux"

endif

else

set nmap = `/usr/local/bin/nmap -sS -O $1 | grep -i "system guess"`

if (`echo $nmap | grep -i win` != "") then

echo "windows"

else if (`echo $nmap | grep -i linux` != "") then

echo "linux"

else

echo "unknown"

endif

endif



 

tilslutt sambascriptet som brukes av os detection:

 

Quote:


#!/bin/bash


if [ "$1" = "" ]; then

echo "Usage: SAMBA host"

exit 1

fi


ALL=`smbclient -L $1 -N | grep OS | sed s/ OS=//g | sed s/ Server=//g | sed s/Domain=//g | sed s/ /_/g`

OS=`echo $ALL | sed s/[[]/ /g | sed s/[]]/ /g | awk '{ print $2 }'`


case $OS in

(Windows_5.1) SYS="Windows XP";;

(Windows_5.0) SYS="Windows 2000";;

(Windows*) SYS="Unknown windows version";;

(*nix) SYS="Unix";;

(*) SYS="Unknown";;

esac;


echo $SYS



Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...