Skip to content
Snippets Groups Projects
Verified Commit 6371dd06 authored by Réthelyi Bálint's avatar Réthelyi Bálint :no_mouth:
Browse files

masodik feladat - bruh

parent 8f43816a
No related branches found
No related tags found
No related merge requests found
Pipeline #20294 passed
...@@ -128,3 +128,35 @@ a függvényt) és nézzük meg a modul/függvény dokumentációkat is a `help( ...@@ -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 - 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()`)! (`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)
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/
#!/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()
...@@ -155,17 +155,4 @@ please use dns.resolver.resolve() instead ...@@ -155,17 +155,4 @@ please use dns.resolver.resolve() instead
('40', 'alt3.aspmx.l.google.com.') ('40', 'alt3.aspmx.l.google.com.')
('30', 'alt2.aspmx.l.google.com.') ('30', 'alt2.aspmx.l.google.com.')
``` ```
---
A forráskód:
```python3
```
Futtatás:
```bash
```
# 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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment