По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие
наши статьи:
Компьютерные сети это то, что можно встретить сейчас в любом доме, в любой организации. Более того, это одна из основных составляющих успешной деятельности современного предприятия. И чем крупнее организация, тем шире в ней компьютерная сеть. В этом случае для удобства организации работы имеет смысл разделить единую сеть на подсети. В этой статье мы рассмотрим, как правильно и без ошибок наладить работу с подсетями в рамках одной локальной сети.
p>
Прежде всего, стоит понимать, а нужно ли вообще разбивать сеть? Если фирма небольшая, на 3-4 сотрудника в одном офисе, то в такой разбивке нет необходимости. Однако, если сотрудники компаний занимают несколько кабинетов, или же отделы находятся в различных зданиях - в этом случае без сегментации на подсети не обойтись.
Вообще, интернет-провайдер рассматривает любую организацию как одну сеть, в идеале, имеющую один IP-адрес. На деле так получается далеко не всегда. Если организация крупная, то в ней по факту может быть несколько локальных подсетей, объединенных в одну сеть, которую и будет "видеть" провайдер. Эти подсети могут быть территориально удалены друг от друга, поэтому нужно правильно наладить их соединение, чтобы избежать ошибок в обмене данными.
Конечно, самым очевидным решением будет присвоение каждому устройству своего IP-адреса. Но если в сети есть несколько маршрутизаторов, такой вариант будет неприемлемым или исключительно сложным в реализации.
Что же делать в случае, если сеть организована через связанные между собой маршрутизаторы? В этом случае нужно присвоить IP-подсетям разные адреса.
Задачка: из пункта А в пункт Б выехал поезд…Упс, нет, не та задача. Пусть в организации есть несколько отделов. Чтобы понять, какое количество IP-адресов выдать на подсеть, необходимо знать потребности каждого отдела. Иными словами, знать максимальное количество компьютеров и сетевых устройств, которое планируется ставить в каждом отделе. Для каждого компьютера (и любого другого сетевого девайса) в рамках подсети будет установлен свой индивидуальный IP-адрес. Также нужны IP-адреса для виртуальных серверов, если таковые используются в организации. Не лишним будет создать запас IP-адресов на случай расширения отдела и установки новых рабочих станций.
Есть два варианта разделения сети. Это вариант с подсетями равного размера и вариант с подсетями разного размера. Рассмотрим первый случай:
Если вы на хотите заморачиваться с самостоятельным расчетом подсетей, то мы сделали все за вас 😌. Воспользуйтесь нашим готовым калькулятором подсетей
Вариант 1: Разделение сети на подсети одинакового размера:
Вообще, в сети, устроенной по протоколу IPv4 можно, как правило размещают 254 устройства (2^8-2 – два в восьмой степени минус 2. Минус два, так как один адрес широковещательный а другой сетевой, так называемый нулевой). Из адресного пространства узла (последние 8 бит) для адресации подсетей потребуется занять несколько бит. Если занять 1 бит получится 2 подсети, 2 бита 4 подсети, 3 бита 8 подсетей и так далее. Маска подсети будет увеличиваться на +1 за каждый занятый для разбивки бит.
Таким образом, определив нужное количество подсетей, мы можем начинать разбивку. Стоит помнить, что чем больше подсетей, тем меньше в них будет адресов. Например, если подсетей нужно сделать 7, то для адресации в адресном пространстве узла мы возьмем 3 бита, и еще 5 у нас останется для присвоения IP-адресов. Таким образом, в каждой подсети можно будет установить (2^5-2 – два в пятой степени минус два) = 30 устройств. Общая вместимость сети в данном случае составит (30*8) =240 устройств.
Диапазоны устройств в подсетях найти также несложно. Они будут распределены от 0 до 254, при этом адреса подсети уже будут зарезервированы (0, 32, 64, 96, 128, 160, 192, 224)
Пример:
1-я подсеть: 1.2.3.0 /27 диапазон 1.2.3.1 /27 1.2.3.30 /27
2-я подсеть: 1.2.3.32 /27 диапазон 1.2.3.33 /27 1.2.3.62 /27
3-я подсеть: 1.2.3.64 /27 диапазон 1.2.3.65 /27 1.2.3.94 /27
4-я подсеть: 1.2.3.96 /27 диапазон 1.2.3.97 /27 1.2.3.126 /27
5-я подсеть: 1.2.3.128 /27 диапазон 1.2.3.129 /27 1.2.3.158 /27
6-я подсеть: 1.2.3.160 /27 диапазон 1.2.3.161 /27 1.2.3.190 /27
7-я подсеть: 1.2.3.192 /27 диапазон 1.2.3.193 /27 1.2.3.222 /27
8-я подсеть: 1.2.3.224 /27 диапазон 1.2.3.225 /27 1.2.3.254 /27
Таким образом, наши IP - пакетики могут легко пройти через маршрутизаторы и найти нужный путь. Но в данном варианте есть и минус - множество IP-адресов в подсети остаются неиспользуемыми. Теперь рассмотрим второй вариант:
Вариант 2. Разделение сети на подсети различного размера:
В данном случае необходимо будет рекурсивно разделить сеть пополам. Посмотрите наглядную картинку:
И так далее. А затем для каждой подсети подобрать адрес с диапазоном нужного размера. Таким образом если в одной подсети 50 устройств, она будет в диапазоне 3 итерации деления, если же 5, то в 5 итерации.
Используя этот метод, мы экономим IP-адреса и можем разделять сеть на подсети разных размеров.
Подытоживая, можно отметить, что такое деление отлично подойдет в случае IPv6, но с учетом того, что там используется гораздо более объемное адресное пространство, там проблемы с экономией IP-адресов не стоит. Принцип деления сети на подсети будет тем же самым с поправкой на 128-битный адрес нового протокола.
SugarCRM - самая распространенная в мире CRM (customer relationship management) или система взаимоотношений с клиентом, являющаяся системой с открытым кодом, или проще говоря «Open Source». Созданная в 2004 году, на текущий момент SugarCRM удовлетворяет потребности свыше 7 000 клиентов, которые создают маркетинговые кампании, увеличивают продажи, повышают лояльность клиентов и используют различные бизнес приложения.
Уникальность SugarCRM заключается в том, что это «Open Source» приложение, а следовательно, оно доступно всем пользователям, будь то разработчик или конечный клиент продукта. Получив исходный код, клиент имеет возможность самостоятельно управлять информацией и приложениями внутри CRM и инсталлировать ее в зависимости от требований. Рассмотрим возможные редакции SugarCRM:
Community Edition (CE) - CE распространяется в рамках лицензии AGPLv3. С 2004 года, CE скачало больше 8 миллионов человек. Данная версия обеспечивает базовый функционал для отдела продаж, маркетинга, поддерживает автоматизацию процессов, пользователей и соответствующих прав. В рамках Community Edition, доступны такие модули как Studio и Module Builder, которые позволяет исправлять ту или иную настройку под конкретное предприятие. Распространяется бесплатно.
Professional Edition (PE) - PE - коммерческое издание SugarCRM, которое устанавливается на базе CE и имеет расширенный функционал. Из всех доступных опций, отметим наиболее важные:
Поддержка «Команд», в рамках которых, можно группировать пользователей по правилам отделов, департаментов или рабочего функционала.
Мощный механизм построения отчетности, который позволяет создавать собственные отчеты по работе сотрудников в виде круговых диаграмм, графиков и статистических данных.
Специально оптимизированная для мобильных телефонов WEB – версия SugarCRM, которая полностью совместима с iPhone и Android смартфонами.
Плагины для Microsoft Office, Outlook, Word и Excel.
Corporate Edition (CorpEd) - Это новая редакция добавлена вместе с релизом версии 6.2, позволяет выстроить следующий функционал поверх существующей PE инсталляции:
Расширенная мобильная версия, которая позволяет хранить данные в режиме оффлайн, совместимо с iPhone, iPad и Blackberry платформами.
Более высокий уровень технической поддержки клиента.
Enterprise Edition (EE) - Перечислим дополнительные опции версии EE:
Улучшенная система отчетности
Оффлайн клиент для работы сотрудников
Специальный портал, в рамках которого осуществляется облегченное взаимодействие с SugarCRM
Специальный плагин для работы с управленческими процессами и документами Lotus Notes
Поддержка базы данных Oracle
Высочайший уровень технической поддержки клиента.
Ultimate Edition (UE) - UE является самым богатым изданием с точки зрения инструментария и функционала. Ко всем вышеперечисленным функциям добавляются:
Коннектор к серверу приложений Lotus Domino Server
Самый высокий из возможных сервис технической поддержки
Что необходимо для установки SugarCRM?
Для базовой инсталляции необходимо:
Компьютер/сервер (поддерживается Unix или Windows ОС)
WEB – сервер (Apache .x или IIS 6 и 7.x)
База данных (MySQL 5.x, SQL Server 2005/2008 или Oracle 10g/11g)
Последняя версия PHP для работы с вышеуказанными компонентами (5.2 или 5.3 поддерживается)
Браузер для доступа к самой CRM (IE 7/8, Firefox, Safari и Chrome)
Если у вас имеется новый дистрибутив Linux, все эти компоненты должны быть доступны из под менеджера пакетов (deb, rpm). Сам по себе инсталлятор это набор web – процедур. Все что нужно, это распаковать скачанный пакет в корне web – сервера и открыть эту директорию через интернет браузер. Пошаговый инсталлятор запросит необходимую информацию и произведет установку.
В этой статье посмотрим как можно отправлять электронные письма при помощи Python. Есть и более простые способы это сделать, но мне больше подошел именно следующий вариант.
Итак, вот как это выглядит: у вас есть имена и адреса электронной почты некоторой группы контактов. И вы хотите отправить каждому из них письмо, добавив в начале сообщения «Уважаемый [имя]».
Для простоты вы можете хранить всю контактную информацию просто в файле, а не в базе данных. Также вы можете сохранить в файл шаблон сообщения, которое вы хотите отправить.
Модуль smtplib в Python – это практически все, что вам понадобиться для отправки простых электронных писем без заполнения темы письма или какой-либо еще дополнительной информации. Но, конечно, для настоящих писем вам необходимо заполнить строку темы письма и другую информацию, и, возможно, даже прикрепить изображения или какие-то другие вложения.
Вот тут и приходит на помощь пакет email в Python. Имейте в виду, что нельзя отправить сообщение через электронную почту, используя только этот пакет. Вам необходимо совместить email и smtplib.
Обязательно ознакомьтесь с подробной официальной документацией для каждого из этих пакетов.
Вот четыре основных шага для отправки электронных писем с помощью Python:
Настройте SMTP-сервер и войдите в свою учетную запись.
Создайте объект сообщения MIMEMultipart и загрузите его с соответствующими заголовками для полей From (От), To (Кому) и Subject (Тема).
Добавьте тело сообщения.
Отправьте сообщение с помощью объекта SMTP-сервера.
А теперь давайте рассмотрим весь процесс.
Допустим, что у вас есть файл контактов mycontacts.txt, который выглядит вот так:
user@computer ~ $ cat mycontacts.txt
john johndoe@example.com
katie katie2016@example.com
Каждая строка соответствует одному контакту. В каждой строке пишется имя, а за ним следует адрес электронной почты. У меня все сохранено в нижнем регистре. Я оставлю преобразования любых полей или некоторых начальных букв в верхний регистр логике программирования, если это будет необходимо. В Python это все довольно просто.
Далее у нас есть файл с шаблоном сообщения message.txt.
user@computer ~ $ cat message.txt
Dear ${PERSON_NAME},
This is a test message.
Have a great weekend!
Yours Truly
Обратили внимание на ${PERSON_NAME}? Это шаблонная строка в Python. Шаблонные строки можно легко заменить другими строками; в данном примере ${PERSON_NAME} будет заменено настоящим именем человека (вы скоро это увидите).
А теперь давайте перейдем к коду Python. Для начала нам необходимо прочитать контакты из файла mycontacts.txt. Мы, кстати, можем обобщить это в отдельную функцию.
# Function to read the contacts from a given contact file and return a
# list of names and email addresses
def get_contacts(filename):
names = []
emails = []
with open(filename, mode='r', encoding='utf-8') as contacts_file:
for a_contact in contacts_file:
names.append(a_contact.split()[0])
emails.append(a_contact.split()[1])
return names, emails
Функция get_contacts() в качестве аргумента принимает имя файла. Она откроет этот файл, прочитает каждую строку (то есть каждый контакт), разделит их на имя и адрес электронной почты, а затем добавит их в два отдельных списка. И, наконец, в качестве результата работы функции возвращаются эти два списка.
Также нам нужна функция для того, чтобы прочитать шаблон сообщения (такой как message.txt) и вернуть объект типа Template, созданный из его содержимого.
from string import Template
def read_template(filename):
with open(filename, 'r', encoding='utf-8') as template_file:
template_file_content = template_file.read()
return Template(template_file_content)
Как и предыдущая функция, в качестве аргумента она принимает имя файла.
Для того, чтобы отправить письмо, вам необходимо использовать протокол SMTP (Simple Mail Transfer Protocol – протокол простого обмена электронной почтой). Как уже упоминалось ранее, у Python есть необходимые для этого библиотеки.
# import the smtplib module. It should be included in Python by default
import smtplib
# set up the SMTP server
s = smtplib.SMTP(host='your_host_address_here', port=your_port_here)
s.starttls()
s.login(MY_ADDRESS, PASSWORD)
В приведенном выше фрагменте кода вы импортируете smtplib, а затем создаете экземпляр SMTP, который формирует SMTP-соединение. В качестве параметра он принимает адрес хоста и номер порта, оба эти параметра полностью зависят от настроек SMTP вашего поставщика услуг электронной почты. Например, в случае Outlook строка под номером 4 будет выглядеть вот так:
s = smtplib.SMTP(host='smtp-mail.outlook.com', port=587)
Для того, чтобы все работало, вам необходимо использовать адрес хоста и номер порта конкретно вашего поставщика услуг электронной почты.
MY_ADDRESS и PASSWORD – это две переменные, которые содержат полный адрес электронной почты и пароль от учетной записи, которую вы собираетесь использовать.
А теперь самое время получить контактную информацию и шаблон сообщения, используя функции, которые мы определили ранее.
names, emails = get_contacts('mycontacts.txt') # read contacts
message_template = read_template('message.txt')
А теперь давайте отправим отдельное письмо каждому из этих контактов.
# import necessary packages
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
# For each contact, send the email:
for name, email in zip(names, emails):
msg = MIMEMultipart() # create a message
# add in the actual person name to the message template
message = message_template.substitute(PERSON_NAME=name.title())
# setup the parameters of the message
msg['From']=MY_ADDRESS
msg['To']=email
msg['Subject']="This is TEST"
# add in the message body
msg.attach(MIMEText(message, 'plain'))
# send the message via the server set up earlier.
s.send_message(msg)
del msg
Для каждого name (имя) и email (адрес электронной почты) (из файла с контактами) вы создаете объект MIMEMultipart, настраиваете заголовки типов содержимого From (от), To (кому), Subject (тема) как словарь ключевых слов, а затем прикрепляете тело сообщения к объекту MIMEMultipart в виде обычного текста. Возможно, вам захочется прочитать документацию, чтобы узнать больше о других типах MIME, с которыми вы также можете поэкспериментировать.
Также обратите внимание, что в строке 10 выше я заменяю ${PERSON_NAME} фактическим именем, которое было извлечено из файла с контактами с помощью механизма шаблонизации в Python.
В данном конкретном примере я каждый раз удаляю объект MIMEMultipart и создаю его заново при каждой итерации цикла.
Как только вы проделаете все это, то сможете отправить сообщение, используя простую удобную функцию send_message() объекта SMTP, который вы создали ранее.
А вот и полный код:
import smtplib
from string import Template
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
MY_ADDRESS = 'my_address@example.comm'
PASSWORD = 'mypassword'
def get_contacts(filename):
"""
Return two lists names, emails containing names and email addresses
read from a file specified by filename.
"""
names = []
emails = []
with open(filename, mode='r', encoding='utf-8') as contacts_file:
for a_contact in contacts_file:
names.append(a_contact.split()[0])
emails.append(a_contact.split()[1])
return names, emails
def read_template(filename):
"""
Returns a Template object comprising the contents of the
file specified by filename.
"""
with open(filename, 'r', encoding='utf-8') as template_file:
template_file_content = template_file.read()
return Template(template_file_content)
def main():
names, emails = get_contacts('mycontacts.txt') # read contacts
message_template = read_template('message.txt')
# set up the SMTP server
s = smtplib.SMTP(host='your_host_address_here', port=your_port_here)
s.starttls()
s.login(MY_ADDRESS, PASSWORD)
# For each contact, send the email:
for name, email in zip(names, emails):
msg = MIMEMultipart() # create a message
# add in the actual person name to the message template
message = message_template.substitute(PERSON_NAME=name.title())
# Prints out the message body for our sake
print(message)
# setup the parameters of the message
msg['From']=MY_ADDRESS
msg['To']=email
msg['Subject']="This is TEST"
# add in the message body
msg.attach(MIMEText(message, 'plain'))
# send the message via the server set up earlier.
s.send_message(msg)
del msg
# Terminate the SMTP session and close the connection
s.quit()
if __name__ == '__main__':
main()