Skip to content
Snippets Groups Projects
1_feladat.md 4.15 KiB
Newer Older
  • Learn to ignore specific revisions
  • Réthelyi Bálint's avatar
    Réthelyi Bálint committed
    # 1. feladat
    
    ## 1.a interaktív mód
    
    A Python nyelv gyakran használt tudományos és matematika algoritmusok implementálására. Írassuk ki mérföldben 3 tizedes jegy pontossággal egy félmaraton hosszát az interpreter segítségével!
    
    Megoldás:
    
    ```bash
    $ python3
    >>> dist = 21097.5
    >>> dist
    21097.5
    >>> mile = 1.6093
    >>> mile
    1.6093
    >>> dist_in_miles = (dist / 1000) / mile
    >>> dist_in_miles
    13.109737152799354
    >>> print("Distance of a half maraton in miles is: {:.3f}".format(dist_in_miles))
    Distance of a half maraton in miles is: 13.110
    ```
    
    ## 1.b Feladat - Külső modul használata 
    
    **Feladat:** Írassuk ki a *google.com* (nem kell a *www* elé!) tartománynévhez rendelt levelező szervereket (MX rekord)! 
    
    Megoldás:
    
    ```bash
    $ python3
    >>> import dns.resolver
    >>> answers = dns.resolver.query('google.com', 'MX')
    <stdin>:1: DeprecationWarning: please use dns.resolver.resolve() instead
    >>> for rdata in answers:
    ...   print('Host', rdata.exchange, 'has preference', rdata.preference
    ...
    Host aspmx.l.google.com. has preference 10
    Host alt3.aspmx.l.google.com. has preference 40
    Host alt4.aspmx.l.google.com. has preference 50
    Host alt1.aspmx.l.google.com. has preference 20
    Host alt2.aspmx.l.google.com. has preference 30
    ```
    
    ## 1.c Feladat - Saját DNS modul 
    
    **Feladat:** Hosszabb kódok esetén az interaktív interpreter használata körülményes. Írjunk Python modult `dns_tool.py` 
    néven az előző feladatban megvalósított funkcióhoz!
    
    
    Réthelyi Bálint's avatar
    Réthelyi Bálint committed
    A forráskód:
    
    ```python3
    from dns.resolver import query
    from dns.exception import DNSException
    
    
    # input: dns name and optional the type of the record and return all the answered data in a list or in 
    # case of exception an empty list
    def get_mx(dns_name, type="MX"):
        try:
            answers = query(dns_name, type)
        except DNSException:
            return []
        ret = []
        for a in answers:
            element = (str(a.preference), str(a.exchange))
            ret.append(element)
    
        return ret
    ```
    
    Futtatás:
    
    
    Réthelyi Bálint's avatar
    Réthelyi Bálint committed
    ```bash
    $ python3
    >>> import dns_tool
    >>> help()
    help> dns_tool.get_mx
    Help on function get_mx in dns_tool:
    
    dns_tool.get_mx = get_mx(dns_name, type='MX')
    
    Réthelyi Bálint's avatar
    Réthelyi Bálint committed
        # input: dns name and optional the type of the record and return all the answered data in a list 
        # or in case of exception an empty list
    
    Réthelyi Bálint's avatar
    Réthelyi Bálint committed
    >>> list = dns_tool.get_mx('google.com')
    >>> for e in list:
    ...     print(e)
    ...
    ('40', 'alt3.aspmx.l.google.com.')
    ('20', 'alt1.aspmx.l.google.com.')
    ('50', 'alt4.aspmx.l.google.com.')
    ('10', 'aspmx.l.google.com.')
    ('30', 'alt2.aspmx.l.google.com.')
    >>>
    >>> list = dns_tool.get_mx('nemletezik.asd')
    >>> for e in list:
    ...     print(e)
    ... 
    >>>
    
    Réthelyi Bálint's avatar
    Réthelyi Bálint committed
    ```
    
    ## 1.d Feladat - Futtatható DNS szkript 
    
    **Feladat:** Tegyük futtathatóvá az elkészült modult!
    
    A forráskód:
    
    ```python3
    #!/usr/bin/env python3
    
    from dns.resolver import query
    from dns.exception import DNSException
    
    
    # input: dns name and optional the type of the record and return all the answered data in a list or in 
    # case of exception an empty list
    def get_mx(dns_name, type="MX"):
        try:
            answers = query(dns_name, type)
        except DNSException:
            return []
        ret = []
        for a in answers:
            element = (str(a.preference), str(a.exchange))
            ret.append(element)
    
        return ret
    
    
    if __name__ == "__main__":
        inp = input("Add meg a lekérdezendő domain-t, valamint ha szeretnéd specifikálni, a rekord típusát is szóközzel "
                    "elválasztva (az alapértelmezett rekord típus az MX): ")
        inp = inp.split(" ")
        if len(inp) >= 2:
            list = get_mx(inp[0], inp[1])
            for e in list:
                print(e)
        else:
            list = get_mx(inp[0])
            for e in list:
                print(e)
    ```
    
    Futtatás:
    
    ```bash
    $ chmod +x dns_tool2.py
    $ ./dns_tool2.py 
    Add meg a lekérdezendő domain-t, valamint ha szeretnéd specifikálni, a rekord típusát is szóközzel 
    elválasztva (az alapértelmezett rekord típus az MX): google.com MX ./dns_tool2.py:11: DeprecationWarning:  
    please use dns.resolver.resolve() instead
      answers = query(dns_name, type)
    ('10', 'aspmx.l.google.com.')
    ('20', 'alt1.aspmx.l.google.com.')
    ('50', 'alt4.aspmx.l.google.com.')
    ('40', 'alt3.aspmx.l.google.com.')
    ('30', 'alt2.aspmx.l.google.com.')
    ```