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