diff --git a/README.md b/README.md index 4fa4aaa31297e2bf1350e9096e3be6264224e911..87d6f4f584ca9809f0e07bd0a42181878e266f88 100644 --- a/README.md +++ b/README.md @@ -128,3 +128,35 @@ a fĂźggvĂŠnyt) ĂŠs nĂŠzzĂźk meg a modul/fĂźggvĂŠny dokumentĂĄciĂłkat is a `help( - Modul futtatĂĄsakor a DNS nevet interaktĂv mĂłdon, a konzolon keresztĂźl kĂŠrjĂźk be a megfelelĹ beĂŠpĂtett fĂźggvĂŠnnyel (`input()`)! +## 2. fealadat - Statisztika szkript + +**Feladat:** KĂŠszĂtsĂźnk futtathatĂł Python szkriptet `mirror_stat.py` nĂŠven, amely statisztikĂĄt kĂŠszĂt megadott +Debian mirror szerverek elĂŠrhetĹsĂŠgĂŠrĹl, amit a futĂĄsa vĂŠgĂŠn ki is listĂĄz! A mirror szerverek a kĂśvetkezĹ fĂĄjlban: +[Primary Debian mirrors](https://qosip.tmit.bme.hu/foswiki/pub/Meres/PythonFeladatok/debian_mirrors.txt) vannak megadva, +mentsĂźk le a szkriptĂźnk mellĂŠ. Az elĂŠrhetĹsĂŠg tesztelĂŠsĂŠhez telepĂtsĂźk ĂŠs hasznĂĄljuk a kĂśvetkezĹ csomagot: `ping3`. +A pingelĂŠshez root jogosultsĂĄg szĂźksĂŠges, Ăgy a szkriptet is root jogosultsĂĄggal kell indĂtani! +Viszont a szkript indĂtĂĄsĂĄhoz nem hasznĂĄlhatjuk csupĂĄn a sudo parancsot az elsĹ feladatnĂĄl leĂrt +linkelĂŠsi/importĂĄlĂĄsi problĂŠmĂĄk miatt. Ennek megkerĂźlĂŠsĂŠre kĂśzvetlenĂźl a virtuĂĄlis kĂśrnyezetbe linkelt `python3` +interpretert kell futtatnunk, paramĂŠterĂźl megadva a szkriptĂźnket: +`sudo ./bin/python3 mirror_stat.py`. A statisztikĂĄban a szerverekhez tartozĂł RTT ĂŠrtĂŠket tĂĄroljuk el! + +(AmĂşgy modern rendszereken a `ping`hez nem kell `sudo`, feleslegesen ne szĂvasd meg magad! - blint) + +- [mirror_stat.py.txt](https://qosip.tmit.bme.hu/foswiki/pub/Meres/PythonFeladatok/mirror_stat.py.txt): +Skeleton fĂĄjl a 2. feladathoz - NevezzĂźk ĂĄt! + +- TĂśltsĂźk le a mirror szervereket tartalmazĂł fĂĄjlt ĂŠs mentsĂźk le a virtuĂĄlis kĂśrnyezeti mappĂĄnkba. +FĂĄjlkezelĂŠshez hasznĂĄljuk a `with` kulcsszĂłt! +- A statisztika struktĂşra inicializĂĄlĂĄsĂĄhoz a beolvasott sorokat elĹszĂśr fel kell dolgozni. +PingelĂŠshez csak a domain nevet hasznĂĄljuk, ezĂŠrt hagyjuk el a `'http://'` elĹ- ĂŠs `'/.../...'` utĂłtagokat! +HasznĂĄljuk a string vĂĄltozĂłk [`split()`](https://docs.python.org/3.5/library/stdtypes.html#str.split) fĂźggvĂŠnyĂŠt! +CĂŠlszerĹą ehhez a `'/'` karakter szerint szeletelni ĂŠs az Ăgy visszaadott listĂĄbĂłl a megfelelĹ tagot kivĂĄlasztani. +- A statisztika tĂĄrolĂĄsĂĄhoz hasznĂĄljunk szĂłtĂĄrat(dict)! +- A szerverek elĂŠrhetĹsĂŠgĂŠhez hasznĂĄljuk a `ping3` modul `ping()` fĂźggvĂŠnyĂŠt! A hasznĂĄlhatĂł funkciĂłkat a `help()` +ĂŠs `dir()` beĂŠpĂtett fĂźggvĂŠnyek segĂtsĂŠgĂŠvel derĂthetjĂźk ki. +- EllenĹrizzĂźk a sikeressĂŠget a pingelĂŠskor (Sikertelen ping esetĂŠn `False` a visszatĂŠrĂŠsi ĂŠrtĂŠk), ĂŠs a statisztikĂĄban +mentsĂźk el a visszaadott ĂŠrtĂŠket. ElĂŠrhetetlen szerver esetĂŠn `None` ĂŠrtĂŠket tĂĄroljunk el! +- Egy komplex struktĂşra formĂĄzott kiĂratĂĄshoz hasznĂĄljuk a beĂŠpĂtett `pprint` csomag `pprint()` fĂźggvĂŠnyĂŠt! +- Ne felejtsĂźk el futtatĂĄshoz a szkriptet a megfelelĹ `sudo` paranccsal indĂtani! +(ahogy fent is Ărtam, nem kell `sudo` hozzĂĄ - blint) + diff --git a/debian_mirrors.txt b/debian_mirrors.txt new file mode 100644 index 0000000000000000000000000000000000000000..eb79ce86a59d89c53cd23b3ac4e5521cf2a6d841 --- /dev/null +++ b/debian_mirrors.txt @@ -0,0 +1,48 @@ +http://ftp.au.debian.org/debian/ +http://ftp.at.debian.org/debian/ +http://ftp.by.debian.org/debian/ +http://ftp.be.debian.org/debian/ +http://ftp.br.debian.org/debian/ +http://ftp.bg.debian.org/debian/ +http://ftp.ca.debian.org/debian/ +http://ftp.cl.debian.org/debian/ +http://ftp.cn.debian.org/debian/ +http://ftp.hr.debian.org/debian/ +http://ftp.cz.debian.org/debian/ +http://ftp.dk.debian.org/debian/ +http://ftp.sv.debian.org/debian/ +http://ftp.ee.debian.org/debian/ +http://ftp.fi.debian.org/debian/ +http://ftp2.fr.debian.org/debian +http://ftp.fr.debian.org/debian/ +http://ftp2.de.debian.org/debian +http://ftp.de.debian.org/debian/ +http://ftp.gr.debian.org/debian/ +http://ftp.hk.debian.org/debian/ +http://ftp.hu.debian.org/debian/ +http://ftp.is.debian.org/debian/ +http://ftp.ir.debian.org/debian/ +http://ftp.ie.debian.org/debian/ +http://ftp.it.debian.org/debian/ +http://ftp.jp.debian.org/debian/ +http://ftp.kr.debian.org/debian/ +http://ftp.lt.debian.org/debian/ +http://ftp.mx.debian.org/debian/ +http://ftp.nl.debian.org/debian/ +http://ftp.nc.debian.org/debian/ +http://ftp.nz.debian.org/debian/ +http://ftp.no.debian.org/debian/ +http://ftp.pl.debian.org/debian/ +http://ftp.pt.debian.org/debian/ +http://ftp.ro.debian.org/debian/ +http://ftp.ru.debian.org/debian/ +http://ftp.sk.debian.org/debian/ +http://ftp.si.debian.org/debian/ +http://ftp.es.debian.org/debian/ +http://ftp.se.debian.org/debian/ +http://ftp.ch.debian.org/debian/ +http://ftp.tw.debian.org/debian/ +http://ftp.tr.debian.org/debian/ +http://ftp.ua.debian.org/debian/ +http://ftp.uk.debian.org/debian/ +http://ftp.us.debian.org/debian/ diff --git a/mirror_stat.py b/mirror_stat.py new file mode 100644 index 0000000000000000000000000000000000000000..b69668b65028464b3ef276fa26ffe1ef9138c4fa --- /dev/null +++ b/mirror_stat.py @@ -0,0 +1,35 @@ +#!/usr/bin/env python3 +import ping3 +import pprint + + +def read_file(): + domains = [] + with open("debian_mirrors.txt", "r") as f: + for line in f: + domain = line.split('http://')[1] + domain = domain.split('/debian')[0] + domains.append(domain) + f.close() + return domains + + +def pingging(domains): + stats = {} + + for domain in domains: + stats[domain] = ping3.ping(domain) # don't need sudo prev for this in a modern system + + return stats + + +def write_out(stats): + pprint.pprint(stats) + + +def main(): + write_out(pingging(read_file())) + + +if __name__ == '__main__': + main() diff --git a/solutions/1_feladat.md b/solutions/1_feladat.md index 276807ef5034fd5901de3cbb9fa76ec37dc1c8d5..33f9b497f81e4cabe29ed420f118d9eca008d5d4 100644 --- a/solutions/1_feladat.md +++ b/solutions/1_feladat.md @@ -155,17 +155,4 @@ please use dns.resolver.resolve() instead ('40', 'alt3.aspmx.l.google.com.') ('30', 'alt2.aspmx.l.google.com.') ``` - - -A forrĂĄskĂłd: - -```python3 - -``` - -FuttatĂĄs: - -```bash - -``` - +--- diff --git a/solutions/2_feladat.md b/solutions/2_feladat.md new file mode 100644 index 0000000000000000000000000000000000000000..ad6957be9f5132fca314330b4e2a125136c78056 --- /dev/null +++ b/solutions/2_feladat.md @@ -0,0 +1,99 @@ +# 2. fealadat - Statisztika szkript + + + +A forrĂĄskĂłd: + +```python3 +#!/usr/bin/env python3 +import ping3 +import pprint + + +def read_file(): + domains = [] + with open("debian_mirrors.txt", "r") as f: + for line in f: + domain = line.split('http://')[1] + domain = domain.split('/debian')[0] + domains.append(domain) + f.close() + return domains + + +def pingging(domains): + stats = {} + + for domain in domains: + stats[domain] = ping3.ping(domain) + # don't need sudo prev for this in a modern system + + return stats + + +def write_out(stats): + pprint.pprint(stats) + + +def main(): + write_out(pingging(read_file())) + + +if __name__ == '__main__': + main() + +``` + +FuttatĂĄs: + +```bash +$ ./mirror_stat.py # don't need sudo prev for this in a modern system +{'ftp.at.debian.org': 0.03299736976623535, + 'ftp.au.debian.org': 0.34027576446533203, + 'ftp.be.debian.org': 0.03146529197692871, + 'ftp.bg.debian.org': 0.026972532272338867, + 'ftp.br.debian.org': 0.24283742904663086, + 'ftp.by.debian.org': 0.04458022117614746, + 'ftp.ca.debian.org': 0.18018722534179688, + 'ftp.ch.debian.org': 0.028354883193969727, + 'ftp.cl.debian.org': 0.30657315254211426, + 'ftp.cn.debian.org': 0.3067350387573242, + 'ftp.cz.debian.org': 0.01130819320678711, + 'ftp.de.debian.org': 0.03345513343811035, + 'ftp.dk.debian.org': 0.038808584213256836, + 'ftp.ee.debian.org': 0.0491025447845459, + 'ftp.es.debian.org': 0.02813887596130371, + 'ftp.fi.debian.org': 0.0488126277923584, + 'ftp.fr.debian.org': 0.026817798614501953, + 'ftp.gr.debian.org': 0.03269171714782715, + 'ftp.hk.debian.org': 0.2723119258880615, + 'ftp.hr.debian.org': 0.014515399932861328, + 'ftp.hu.debian.org': None, + 'ftp.ie.debian.org': 0.02628612518310547, + 'ftp.ir.debian.org': 0.08768963813781738, + 'ftp.is.debian.org': 0.032915592193603516, + 'ftp.it.debian.org': 0.024731159210205078, + 'ftp.jp.debian.org': None, + 'ftp.kr.debian.org': 0.29165196418762207, + 'ftp.lt.debian.org': None, + 'ftp.mx.debian.org': 0.19156241416931152, + 'ftp.nc.debian.org': 0.28337621688842773, + 'ftp.nl.debian.org': 0.027075767517089844, + 'ftp.no.debian.org': 0.04285454750061035, + 'ftp.nz.debian.org': 0.4031505584716797, + 'ftp.pl.debian.org': 0.03990578651428223, + 'ftp.pt.debian.org': 0.055294036865234375, + 'ftp.ro.debian.org': 0.02721881866455078, + 'ftp.ru.debian.org': 0.06427860260009766, + 'ftp.se.debian.org': 0.049542903900146484, + 'ftp.si.debian.org': 0.03377056121826172, + 'ftp.sk.debian.org': 0.014045000076293945, + 'ftp.sv.debian.org': 0.23726940155029297, + 'ftp.tr.debian.org': None, + 'ftp.tw.debian.org': 0.4211571216583252, + 'ftp.ua.debian.org': 0.04955434799194336, + 'ftp.uk.debian.org': 0.03197216987609863, + 'ftp.us.debian.org': 0.20902609825134277, + 'ftp2.de.debian.org': 0.020498037338256836, + 'ftp2.fr.debian.org': 0.02599787712097168} +``` \ No newline at end of file