Az MRTG telepítése

A HupWiki-ből...

Tartalomjegyzék

Az MRTG telepítése mini-HOWTO

Ez a dokumentum leírja, hogyan telepítsük fel az MRTG-t Debian GNU/Linuxra.

Micskó Gábor trey () hup ! hu - Hungarian Unix Portal v1.0 2001. július 31. kedd 9:17:16 - Copyright © Hungarian Unix Portal

Mi is az az MRTG?

A Multi Router Traffic Grapher (MRTG) egy olyan program, amellyel monitorozni tudjuk egy hálózati eszközön átmenő forgalmat. Az MRTG a hálózati forgalomból különböző szempontok alapján HTML oldalakat készít, amelyekben GIF képekre rajzolja a grafikonokat. Az MRTG-t perl-ben és C-ben írták, fut minden UNIX rendszeren. Eddig Solaris 8-on és Linuxon teszteltem minden gond nélkül. Az MRTG a működéshez egy jól portolható perlben írt SNMP implementációt használ, ezért használatáshoz nem szükséges semmilyen külső SNMP csomag. Az MRTG támogatja az új SNMPv2c 64 bites számlálókat. Könnyen konfigurálható a hozzá adott konfigurácós eszközökkel. Kellően gyors, mert a kritikus rutinokat átírták perl-ből C-re. A képeket .png formátumúra készíti, ehhez a GD library-t használja.


Az MRTG-vel készíthetünk grafikont az elmúlt 5 perc átlagából (daily view), az elmúlt 30 perc átlagából (weekly view), az elmúlt 2 óra átlagából (monthly view), és az elmúlt 1 nap átlagából (yearly view). Az MRTG nem kizárólag a Network Load-ot tudja analizálni, hanem az összes SNMP eseményt. Ha írsz hozzá külső modult, akkor szinte bármit monitorozhatsz: System Load, Login Session, Modem állapot, CPU terhelés, Irc szerver kihasználtság, HDD kapacitás, és még ezer dolog. A modulokat perl-ben célszerű megírni, és amint látni fogjuk nagyon egyszerűen lehet ilyen modulokat fejleszteni.

A licenc

Az MRTG szabadon felhasználható a GNU General Public License feltételei mellett.

A telepítés

Az MRTG

A legfrissebb verziót innen töltheted le : http://ee-staff.ethz.ch/~oetiker/webtools/mrtg/pub/

Az MRTG forráskódban tölthető le, tehát használat előtt le kell fordítani. Hogy ezt megtehessük szükség van egy C fordítóra (gcc) és a gépen installált perl-re.

Mivel Debiant használunk :-) szerencsénk van. A Debian tartalmaz minden eszközt a telepítéshez. Mégis ha a legújabb MRTG-re van szükséged, akkor töltsd le a fenti linkről.

Tehát az installálás a következőképpen történik. A megfelelő sources.list beállítása mellett:

# apt-get install mrtg

Ajánlott még: mrtg-contrib, httpd (mondjuk Apache) | www-browser (mondjuk links, lynx, Opera, Mozilla, stb.)

Ezeket kell nekünk még telepíteni. A web browser meg arra kell, hogy a művünket meg is tudjuk nézni. Ha a grafikonunkat a webre is ki szeretnénk helyezni, akkor telepítsünk egy httpd-t is.

Az SNMP(d)

Ahhoz, hogy használjuk, kell egy SNMP daemon is. Az MRTG ugyan tartalmaz egy SNMP implementációt, én mégis azt javaslom, hogy telepítsünk egyet.

  1. apt-get install snmpd

ez a parancs feltelepíti az SNMP daemont a gépünkre. Mivel a daemon biztosági szempontból nincs beállítva - amire fel is hivja a figyelmünket - konfigurálnunk kell. Ezt megtehetjük a /etc/snmp/snmpd.conf szerkesztésével.

Keressük meg ezt a részt:

##########################################################################
# Access Control
##########################################################################
....
....
##########################################################################
#
# First, map the community name (COMMUNITY) into a security name
# (local and mynetwork, depending on where the request is coming
# from):
# sec.name source community

com2sec paranoid default public
# com2sec readonly default public
# com2sec readwrite default private

Amint látjuk a security alapbeállítása 'paranoid', azaz ezzel sok mindent nem tudunk így kezdeni. Ahhoz, hogy az MRTG le tudja kérdezni, át kell kissé írnunk:

# sec.name source community
# com2sec paranoid default public
com2sec readonly default public
#com2sec readwrite default private

Tehát a default a 'com2sec readonly default public' legyen. Több jogot felesleges adnunk. Ha átírtuk, mentsük el a config-ot, majd /etc/init.d/snmpd restart parancsot adjuk ki bátran. Ez azért kell, hogy az új beállítások érvényesüljenek.

Ha ez megvan, minden olyan összetevőt telepítettünk, amely az MRTG futtatásához, használatához kell.

Az MRTG beállítása

Az MRTG konfigurálása kicsit nehezebb dolog. Ez mindig az adott konfigurációtól függ. Én most egy standalone gép ppp0, eth0, vmnet1 csatolóját fogom monitorozni. Természetesen az MRTG képes a ppp0, ippp0, stb. interface-ket is monitorozni. A beállítások nem sokban térnek el egymástól.

Ahhoz hogy az MRTG működni tudjon, szükség van egy mrtg.cfg file-ra (lehet más is a neve). Ezt általában a /etc/mrtg.cfg helyen találod. Ez a file az installálás után még nem létezik, neked kell legyártani. Ehhez a 'cfgmaker' nevű programot fogjuk használni, amelyet az MRTG-vel szállítanak. Az első dolog a router-ünk (szerverünk) Target-jét meghatározzuk. A Target mondja meg az MRTG-nek mit is kell monitorozni. Pl:

Target[valamigep.valahol.hu]: 2:public@valamigep.valahol.hu

Tehát:

cfgmaker 2:public@195.56.26.224 >> mrtg.cfg

ezzel a configfile jó esetben el is készült. Itt az IP cím a ppp0 interface IP-je.

Egy példa az mrtg.cfg -re:

---------------------------------X----X-----------------------------------

WorkDir: /var/www/mrtg
WriteExpires: Yes
#########################################################################
# System: sunshine
# Description: Linux sunshine 2.4.6 #2 Sun Jul 8 13:46:40 CEST 2001 i686
# Contact: Root <root@localhost> (configure /etc/snmp/snmp.local.conf)
# Location: Unknown (configure /etc/snmp/snmp.local.conf)
#########################################################################


### Interface 1 >> Descr: 'lo' | Name:  | Ip: '127.0.0.1' | Eth:  ###
### The following interface is commented out because:
### * it is a Software Loopback interface
#
# Target[195.56.26.224_1]: 1:public@195.56.26.224:
# SetEnv[195.56.26.224_1]: MRTG_INT_IP="127.0.0.1" MRTG_INT_DESCR="lo"
# MaxBytes[195.56.26.224_1]: 1250000
# Title[195.56.26.224_1]: Traffic Analysis for 1 -- sunshine
# PageTop[195.56.26.224_1]: <H1>Traffic Analysis for 1 -- sunshine</H1>
# <TABLE>
# <TR><TD>System:</TD> <TD>sunshine in Unknown (configure /etc/snmp/snmp.local.conf)</TD></TR>
# <TR><TD>Maintainer:</TD> <TD>Root <root@localhost> (configure /etc/snmp/snmp.local.conf)</TD></TR>
# <TR><TD>Description:</TD><TD>lo </TD></TR>
# <TR><TD>ifType:</TD> <TD>softwareLoopback (24)</TD></TR>
# <TR><TD>ifName:</TD> <TD></TD></TR>
# <TR><TD>Max Speed:</TD> <TD>1250.0 kBytes/s</TD></TR>
# <TR><TD>Ip:</TD> <TD>127.0.0.1 (trey.hu)</TD></TR>
# </TABLE>


### Interface 2 >> Descr: 'eth0' | Name:  | Ip: '10.0.0.1' | Eth: '00-08-c7-ea-7a-4b' ###
Target[195.56.26.224_2]: 2:public@195.56.26.224:
SetEnv[195.56.26.224_2]: MRTG_INT_IP="10.0.0.1" MRTG_INT_DESCR="eth0"
MaxBytes[195.56.26.224_2]: 1250000
Title[195.56.26.224_2]: Traffic Analysis for 2 -- sunshine
PageTop[195.56.26.224_2]: <H1>Traffic Analysis for 2 -- sunshine</H1>
<TABLE>
<TR><TD>System:</TD> <TD>sunshine in Unknown (configure /etc/snmp/snmp.local.conf)</TD></TR>
<TR><TD>Maintainer:</TD> <TD>Root <root@localhost> (configure /etc/snmp/snmp.local.conf)</TD></TR>
<TR><TD>Description:</TD><TD>eth0 </TD></TR>
<TR><TD>ifType:</TD> <TD>ethernetCsmacd (6)</TD></TR>
<TR><TD>ifName:</TD> <TD></TD></TR>
<TR><TD>Max Speed:</TD> <TD>1250.0 kBytes/s</TD></TR>
<TR><TD>Ip:</TD> <TD>10.0.0.1 (sunshine.trey.hu)</TD></TR>
</TABLE>
### Interface 3 >> Descr: 'vmnet1' | Name:  | Ip: '10.0.0.2' | Eth: '00-50-56-01-00-00' ###
Target[195.56.26.224_3]: 3:public@195.56.26.224:
SetEnv[195.56.26.224_3]: MRTG_INT_IP="10.0.0.2" MRTG_INT_DESCR="vmnet1"
MaxBytes[195.56.26.224_3]: 1250000
Title[195.56.26.224_3]: Traffic Analysis for 3 -- sunshine
PageTop[195.56.26.224_3]: <H1>Traffic Analysis for 3 -- sunshine</H1>
<TABLE>
<TR><TD>System:</TD> <TD>sunshine in Unknown (configure /etc/snmp/snmp.local.conf)</TD></TR>
<TR><TD>Maintainer:</TD> <TD>Root <root@localhost> (configure /etc/snmp/snmp.local.conf)</TD></TR>
<TR><TD>Description:</TD><TD>vmnet1 </TD></TR>
<TR><TD>ifType:</TD> <TD>ethernetCsmacd (6)</TD></TR>
<TR><TD>ifName:</TD> <TD></TD></TR>
<TR><TD>Max Speed:</TD> <TD>1250.0 kBytes/s</TD></TR>
<TR><TD>Ip:</TD> <TD>10.0.0.2 ()</TD></TR>
</TABLE>
### Interface 4 >> Descr: 'ppp0' | Name:  | Ip: '195.56.26.224' | Eth:  ###
### The following interface is commented out because:
### * has a speed of 0 which makes no sense
#
# Target[195.56.26.224_4]: 4:public@195.56.26.224:
# SetEnv[195.56.26.224_4]: MRTG_INT_IP="195.56.26.224" MRTG_INT_DESCR="ppp0"
# MaxBytes[195.56.26.224_4]: 0
# Title[195.56.26.224_4]: Traffic Analysis for 4 -- sunshine
# PageTop[195.56.26.224_4]: <H1>Traffic Analysis for 4 -- sunshine</H1>
# <TABLE>
# <TR><TD>System:</TD> <TD>sunshine in Unknown (configure /etc/snmp/snmp.local.conf)</TD></TR>
# <TR><TD>Maintainer:</TD> <TD>Root <root@localhost> (configure #/etc/snmp/snmp.local.conf)</TD></TR>
# <TR><TD>Description:</TD><TD>ppp0 </TD></TR>
# <TR><TD>ifType:</TD> <TD>ppp (23)</TD></TR>
# <TR><TD>ifName:</TD> <TD></TD></TR>
# <TR><TD>Max Speed:</TD> <TD>0.0 Bytes/s</TD></TR>
# <TR><TD>Ip:</TD> <TD>195.56.26.224 (gyor-1.dialin.datanet.hu)</TD></TR>
# </TABLE>
Target[localhost.cpu]: `/home/trey/cpuinfo.pl`
MaxBytes[localhost.cpu]: 100
Options[localhost.cpu]: gauge, nopercent
Unscaled[localhost.cpu]: dwym
YLegend[localhost.cpu]: % of CPU used
ShortLegend[localhost.cpu]: %
LegendO[localhost.cpu]:  CPU System: 
LegendI[localhost.cpu]:  CPU User:
Title[localhost.cpu]: localhost.cpu name
PageTop[localhost.cpu]: <H1>CPU usage for localhost.cpu name</H1>
<TABLE>
<TR><TD>System:</TD> <TD>Debian GNU/LiNUX 2.2</TD></TR>
<TR><TD>Maintainer:</TD> <TD>System administrator</TD></TR>
<TR><TD>Description:</TD><TD>Intel Pentium III</TD></TR>
<TR><TD>Ip:</TD> <TD>localhost (debian)</TD></TR>
</TABLE>
---------------------------------X----X-----------------------------------

Ahol a 'WorkDir: /var/www/mrtg' ahova az MRTG dolgozik. A config file első szakaszában a 'lo' azt jelenti, hogy a localhost-ot monitorozza. Azután következik a többi interface: az 'eth0', vmnet1, ppp0, és végül egy külső modul segítségével a gép CPU-jának terhelését mérjük. Itt jól látható, hogy miként tudunk egy általunk írt modult futtatni. A `/home/trey/cpuinfo.pl` egy perl script amit nekünk kell megírni, vagy beszerezni.

---------------------------------X----X-----------------------------------
#!/usr/bin/perl
# Script modified by trey
# Succesfully tested on this systems:
# Solaris8 x86
# Debian GNU/Linux 2.2potato, 2.3 Woody unstable
#========================================================
# CPU Usage script for mrtg
#
# File: cpuinfo.pl
# Author: Matthew Schumacher | schu@7x.com
# Version: 1.0
#
# Date: 10/15/1999
# Purpose: This script reports CPU usage for user
# and system to mrtg, along with uptime
# and the machine's hostname.
#
# Usage: ./cpuinfo.pl {machine} {os}
#
# For now {os} can only be "sun" or "linux"
#
# If you would like to hard code defaults
# then enter them below.
#
# Info: Designed on RedHat linux 6.0 with perl
# version 5.004_04. The script itself has
# only been tested on Linux, however, it
# has been tested to connect to, and graph
# CPU usage on sun (solaris 7) and linux.
#
# This script requires both sar and rsh to
# be installed and working. Because linux
# does not come with sar (mine didn't) it
# may be necessary to download and install
# it. Get it here:
#
# ftp://metalab.unc.edu/pub/Linux/system/status/sysstat-2.0.tar.gz
#
#
# How it works:
#
# The script uses rsh to run sar on the the
# remote machine. Sar samples the cpu time
# for both user and system once per second
# for 10 seconds. It then reports an average
# to the script, which parses out the information
# and formats it in a way mrtg can understand.
# The script also runs uptime to get the machine's
# uptime and passes it to mrtg.
#
# [Note to User]
#
# If anyone has comments or suggestions, email me at
# schu@7x.com and I'll try to get back to you :)
#
# -------------------------------------------------------------
#
# Sample cfg:
#
# Target[machine]: `./cpuinfo.pl`
# MaxBytes[machine]: 100
# Options[machine]: gauge, nopercent
# Unscaled[machine]: dwym
# YLegend[machine]: % of CPU used
# ShortLegend[machine]: %
# LegendO[machine]:  CPU System:
# LegendI[machine]:  CPU User:
# Title[machine]: Machine name
# PageTop[machine]: >H1<CPU usage for Machine name
# >/H1<
# >TABLE<
# >TR<>TD<System:>/TD<>TD<Machine name>/TD<>/TR<
# >/TABLE<
#
# --------------------------------------------------------------
#
# Ok, we are now done with the notes :)
#
#========================================================
# setup local vars


my($machine, $os);
#=======================================================
# == Enter your default machine name and os here ==
$machine = "195.56.253.245";  # Enter machine to monitor here
$os = "sun";  # Currently there is only linux and sun
# == You shouldn't need to edit anything below this line ==
#========================================================
# This allows command args to override defaults listed above


if (scalar(@ARGV) < 2)
{
print("USAGE: cpuinfo.pl {machine} {os}\n");
exit(-1);
}
if ($ARGV[0] ne  && $ARGV[0] ne ' #')
{
$machine = $ARGV[0];
}
if ($ARGV[1] ne  && $ARGV[1] ne ' #')
{
$os = $ARGV[1];
}
# Validate the os
SWITCH:
{
if ($os =~ /^sun$/){last SWITCH;}
if ($os =~ /^linux$/){last SWITCH;}
# DEFAULT: Die if we can't figure out what the os is
die "Can't figure out which OS the machine is.\n";
}


# Execute the appropriate subroutine based on the os
&$os;
exit(0);
#=======================================================
# Subroutines: names of subroutines are supported OSs.
#========================================================
sub sun
{
# Run commands
# $getcpu = `rsh $machine "sar -u 1 10" | grep Average`;
# $getuptime = `rsh $machine "uptime"`;


$getcpu = `sar -u 1 40 | grep Average`;
$getuptime = `uptime`;
# Parse though getcpu and get data
$getcpu =~ /^Average\s+(\d+)\s+(\d+)\s+/;
$outputusr = $1;
$outputsys = $2;
# Print getcpu data for mrtg
print $outputusr."\n";
print $outputsys."\n";
# Parse though getuptime and get data
$getuptime =~ /^\s+(\d{1,2}:\d{2}..)\s+up\s+(\d+)\s+(......),/;
# Print getuptime data for mrtg
print $2." ".$3."\n";
# Print machine name for mrtg
print $machine."\n";
}


sub linux
{
# Run commands
# $getcpu = `rsh $machine "/usr/local/bin/sar -u 1 10 | grep "Average:""`;
# $getuptime = `rsh $machine "/usr/bin/uptime"`;
$getcpu = `/usr/local/bin/sar -u 1 10 | grep "Average:"`;
$getuptime = `/usr/bin/uptime`;
# Parse though getcpu and get data
$getcpu =~ /^Average:\s+(\d+).(\d+)%\s+(\d+).(\d+)%\s+(\d+).(\d+)%\s+(\d+).(\d+)%/;
$getcpuusr = $1;
$getcpusys = $5;
# Print getcpu data for mrtg
print $getcpuusr."\n";
print $getcpusys."\n";
# Parse though getuptime and get data
$getuptime =~ /^\s+(\d{1,2}:\d{2}..)\s+up\s+(\d+)\s+(\w+),/;
# Print getuptime data for mrtg
print $2." ".$3."\n";
# Print machine name for mrtg
print $machine."\n";
}
---------------------------------X----X-----------------------------------

Hogyan futtassuk az MRTG-t?

Mivel szeretnénk ha a Network Load-ot, CPU terhelést, stb. folyamatosan nyomon követhetnénk (csak ennek van értelme), szükséges az MRTG-t crontab-ba tenni (lehet daemon-ként is futtatni, ehhez olvasd el a /usr/doc/mrtg könyvtárban levő dokumentációt. Meg amúgyis : RTFM).

editáljuk a /etc/crontab file -t, és irjuk bele az alábbi sort:

5,10,15,20,25,30,35,40,45,50,55 * * * * /usr/bin/mrtg /etc/mrtg.cfg > /dev/null    2>&1

Ez azt, teszi hogy minden nap, minden ötödik percben lefuttatja az MRTG -t, és elkészíti a grafikonokat.

Minták

Itt két mintát láthatsz az MRTG kimenetéből. Mielőtt valaki összefüggést keresne a fenti config file, és az itt látható képek között, elmondom, hogy ezek a képek nem a fenti configfile alapján készültek :-).


Traffic Analysis debian.szintezis.hu

System:SunOS 5.8 aka. Solaris 8
Maintainer:System administrator
Description:iprb0
ifType:ethernetCsmacd (6)
ifName:Intel 100pro/Compaq Netelligent
Max Speed:17.0 kBytes/s
Ip:195.56.253.245 (debian)


The statistics were last updated Tuesday,

31 July 2001 at 11:20,
at which time 'debian' had been up for 93

days, 2:55:43.
`Daily' Graph (5 Minute Average)
http://www.hup.hu/old/mrtg_howto/debian.szintezis.hu_2-day.png
Max  In:5675.0 B/s (33.4%) Average  In:205.0 B/s (1.2%) Current  In:360.0 B/s (2.1%)
Max  Out:10.5 kB/s (61.9%) Average  Out:1024.0 B/s (6.0%) Current  Out:7691.0 B/s (45.2%)

`Weekly' Graph (30 Minute Average)
http://www.hup.hu/old/mrtg_howto/debian.szintezis.hu_2-week.png
Max  In:8898.0 B/s (52.3%) Average  In:471.0 B/s (2.8%) Current  In:61.0 B/s (0.4%)
Max  Out:14.7 kB/s (86.2%) Average  Out:1769.0 B/s (10.4%) Current  Out:390.0 B/s (2.3%)

`Monthly' Graph (2 Hour Average)
http://www.hup.hu/old/mrtg_howto/debian.szintezis.hu_2-month.png
Max  In:4997.0 B/s (29.4%) Average  In:318.0 B/s (1.9%) Current  In:69.0 B/s (0.4%)
Max  Out:14.2 kB/s (83.7%) Average  Out:1596.0 B/s (9.4%) Current  Out:209.0 B/s (1.2%)

`Yearly' Graph (1 Day Average)
http://www.hup.hu/old/mrtg_howto/debian.szintezis.hu_2-year.png"
Max  In:31.4 kB/s (184.5%) Average  In:846.0 B/s (5.0%) Current  In:246.0 B/s (1.4%)
Max  Out:30.6 kB/s (180.2%) Average  Out:2277.0 B/s (13.4%) Current  Out:1194.0 B/s (7.0%)


GREEN ###Incoming Traffic in Bytes per Second
BLUE ###Outgoing Traffic in Bytes per Second



http://www.hup.hu/old/mrtg_howto/mrtg-l.pnghttp://www.hup.hu/old/mrtg_howto/mrtg-m.pnghttp://www.hup.hu/old/mrtg_howto/mrtg-r.png
version 2.9.10Tobias Oetiker oetiker@ee.ethz.ch and Dave Rand dlr@bungi.com

 

CPU usage for debian.szintezis.hu name

System:SunOS 5.8 aka. Solaris 8
Maintainer:System administrator
Description:Intel Pentium Pro 200 dual
Ip:195.56.253.245 (debian)


The statistics

were last updated Tuesday, 31 July 2001 at 11:20,
at which time '195.56.253.245' had been up for 93 day(s).


`Daily' Graph (5 Minute Average)
http://www.hup.hu/old/mrtg_howto/debian.szintezis.hu-day.png
Max  CPU User:29.0 % Average  CPU User:3.0 % Current  CPU User:1.0 %
Max  CPU System:5.0 % Average  CPU System:1.0 % Current  CPU System:1.0 %

`Weekly' Graph (30 Minute Average)
http://www.hup.hu/old/mrtg_howto/debian.szintezis.hu-week.png
Max  CPU User:8.0 % Average  CPU User:1.0 % Current  CPU User:2.0 %
Max  CPU System:4.0 % Average  CPU System:0.0 % Current  CPU System:1.0 %

`Monthly' Graph (2 Hour Average)
http://www.hup.hu/old/mrtg_howto/debian.szintezis.hu-month.png
Max  CPU User:8.0 % Average  CPU User:1.0 % Current  CPU User:2.0 %
Max  CPU System:2.0 % Average  CPU System:0.0 % Current  CPU System:1.0 %

`Yearly' Graph (1 Day Average)
http://www.hup.hu/old/mrtg_howto/debian.szintezis.hu-year.png
Max  CPU User:2.0 % Average  CPU User:1.0 % Current  CPU User:2.0 %
Max  CPU System:0.0 % Average  CPU System:0.0 % Current  CPU System:0.0 %


GREEN ###Incoming Traffic in Bytes per Second
BLUE ###Outgoing Traffic in Bytes per Second



http://www.hup.hu/old/mrtg_howto/mrtg-l.pnghttp://www.hup.hu/old/mrtg_howto/mrtg-m.pnghttp://www.hup.hu/old/mrtg_howto/mrtg-r.png
version 2.9.10Tobias Oetiker oetiker@ee.ethz.ch and Dave Rand dlr@bungi.com

Kapcsolódó linkek

Az MRTG hivatalos honlapja: http://ee-staff.ethz.ch/~oetiker/webtools/mrtg/mrtg.html

Az MRTG FAQ oldalát itt találod: http://faq.mrtg.org/

Hogyan működik az SNMP? A választ itt találod: http://www.develnet.es/~david/papers/snmp/

Végszó

Ennyit röviden az MRTG telepítéséről. Természetesen ez a leírás a minimális lehetőségeket ismerteti. Amennyiben extra kívánságod van, látogass el az MRTG oldalára, és olvasd el a dokumentációt. A weboldalon nagyon jól dokumentálva van minden.

Copyright, licenc, visszajelzés és ilyesmi

Micskó Gábor trey () hup ! hu - Hungarian Unix Portal - http://www.hup.hu/

Ez a dokumentum szabadon másolható és terjeszthető a GNU GPL terjesztési feltételei szerint.

Garancia nincs.

Visszajelzéseket, építő jellegű kritikát a trey () hup ! hu email címre várok.

Sok szerencsét!