Лабораторная № 1 - Хост резолвер

Apr 19, 2010 09:35

hosts.py:

# -*- coding: cp1251 -*-
#Главный модуль программы

import host_read, host_search, host_write, host_print
while True:
    print 'Меню скрипта hosts.py:'
    print 'Просмотр базы хостов - 1'
    print 'Добавление нового хоста - 2'
    print 'Поиск IP адреса по имени хоста - 3'
    print 'Выход с любого уровня программы - "q".\n'
    var = raw_input('Выберите пункт меню: ')
    hostDict = {}
    host_read.hostRead('hosts',hostDict)
    if var == 'q':
        break
    elif var == '1':
        host_print.hostPrint(hostDict)
    elif var == '2':
        try:
            host_write.hostWrite('hosts')
        except host_write.FormatError:
            print 'Неправильный формат ввода.\n'
    elif var == '3':
        host_search.Search(hostDict)


host_read.py:

# -*- coding: cp1251 -*-
#Модуль считывает данные из файла в словарь

def hostRead(fileName,d):
        l=[]
        for line in open(fileName,'r'):
                l.append(line.rstrip().split())
        for i in range(len(l)):
            d[l[i][0]]=l[i][1]
        return

host_write.py:

# -*- coding: cp1251 -*-
#Добавляет в файл hosts новые значения

class FormatError: pass

def hostWrite(wrHost):
    while True:
        f = raw_input('Введите через пробел <имя хоста> : ')
        if f != 'q':
            try:
                compare = f.split()[1].split('.')
                for i in compare:
                    i = int(i)
                    if i < 0 or i > 256:
                        raise FormatError

fileHosts = open(wrHost,'a')
                fileHosts.write(f+'\n')
                fileHosts.close()
            except IndexError, TypeError:
                raise FormatError
        else:
            break

host_search.py:

# -*- coding: cp1251 -*-

#Поиск IP адреса по имени хоста

def hostSearch(d,key):
    if key[0] in d.keys():
        key.append(d[key[0]])
        return
    else:
        key.append(None)
        return

def Search(fileDict):
    while True:
        host = ''
        findHost =[]
        host = raw_input('Enter the host name: ')
        if host == 'q':
            break
        findHost.append(host)
        hostSearch(fileDict,findHost)
        if findHost[1] == None:
            print 'Unknown host name: "%s".' % (findHost[0])
        else:
            print 'Host "%s" have IP: %s.\n' % (findHost[0],findHost[1])

host_print.py:

# -*- coding: cp1251 -*-
#Выводит на экран словарь с хостами

def hostPrint(fileDict):
        for y,z in fileDict.iteritems():
                print y,z,'\n',
        raw_input('Press any key.')
        return

Файл hosts:

faq.ru 98.36.35.34
yandex.ru 15.15.15.15
google.com 16.16.16.16
localhost 127.0.0.1
rt.ru 197.12.0.2
avalon.ru 88.23.65.89
faqing.info 12.12.12.12
exit.ru 15.15.15.15
gigolo.ru 45.45.45.45
hub.ru 174.12.85.158
rbc.ru 145.25.32.36
trick.org 147.158.169.123
gogo.gov 123.25.23.21
pipe.ru 45.45.65.65
rt.sp.com 65.32.98.45
rew.rt.ru 45.78.12.45
rew.rt.cx 56.23.56.89
rembo1stblood.ru 45.12.45.12
qwerty 12.12.12.12

lab #01, python

Previous post Next post
Up