По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
В данной статье расскажем о модуле состояния присутствия (или доступности) Presence State Module, который позволяет контролировать какие состояния доступны пользователям в определенных приложениях. Состояние пользователя, в свою очередь, могут влиять на обработку звонков. Например, пользователь может выбрать состояние “Не беспокоить” (Do Not Disturb/ DND), и отправить входящий звонок сразу на голосовую почту. Доступные состояния пользователь затем может выбирать в User Control Panel (UCP) в разделе Presence. Настройка статусов присутствия Рассмотрим как настраивается модуль состояния присутствия на примере FreePBX 13. Для того, чтобы попасть в модуль, из главной страницы необходимо перейти по следующему пути Admin -> Presence State. Если никаких других состояний не создавалось, то после перехода отразятся состояния, которые заданы в системе по умолчанию Чтобы добавить новое состояние, необходимо нажать Add State Далее нужно выбрать желаемый тип нового состояния, доступны следующие несколько типов: Available, Chat, Away, DND, Extended Away, и Unavailable. Рассмотрим каждый: Available - Пользователь на месте и готов принимать и обрабатывать звонки Chat - Пользователь на месте, но предпочитает вести общение по средствам чата Away - Пользователь отошел с рабочего места на короткий промежуток времени, например - на обед, перерыв или совещание DND/ Do Not Disturb – Пользователь занят и не готов отвечать на звонки и чат Extended Away - Пользователя нет на месте длительный период времени, например – отпуск, больничный или командировка Unavailable - Пользователь может отвечать на звонки, но недоступен по чату Далее необходимо задать сообщение, которое бы дополняло статус доступности пользователя. На примере ниже выбран статус Extended Away с сообщением “Vacation till 01/06/16”, значит, пользователь ушел в отпуск и до первого июня его не будет на рабочем месте. Чтобы закончить создание нового состояния, необходимо нажать Submit. Готово, новое состояние отразится в меню. Права на изменение статусов Теперь необходимо дать пользователю возможность изменять свое состояние присутствия. Для этого с главной страницы переходим по следующему пути Admin -> User Management и выбираем из списка пользователя, которому нужно дать разрешение. Далее открываем вкладки UCP - > Presence State и напротив опции Enable Presence выбираем Yes. Готово, теперь этот пользователь может менять свой статус присутствия/доступности в User Control Panel
img
В этой статье посмотрим как можно отправлять электронные письма при помощи 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()
img
Sudo означает SuperUser DO и используется для доступа к файлам и операциям с ограниченным доступом. По умолчанию Linux ограничивает доступ к определенным частям системы, предотвращая компрометацию конфиденциальных файлов. Команда sudo временно повышает привилегии, позволяя пользователям выполнять конфиденциальные задачи без входа в систему как пользователь root. В этом руководстве вы узнаете, как использовать команду sudo в Linux с примерами. Как использовать команду sudo Установка sudo Пакет sudo установлен в большинстве дистрибутивов Linux. Чтобы проверить есть ли у вас эта комманда введите sudo. Вы увидите справочное сообщение или сообщение о том что комнада не найдена. Чтобы установить sudo используйте для Ubuntu и Debian: apt install sudo или для CentOS и Fedora yum install sudo sudo была разработана как способ временного предоставления пользователю административных прав. Чтобы заставить ее работать, используйте sudo перед ограниченной командой, которую можно выполнить только из под рута. Тогда система запросит ваш пароль. После его ввода система запускает команду. Синтаксис sudo [команда] Опции sudo можно использовать с дополнительными параметрами: -h - отображает синтаксис и параметры команды -V - отображает текущую версию приложения sudo -v - обновить лимит времени на sudo без запуска команды -l - перечисляет права пользователя или проверяет конкретную команду -к - завершить текущие привилегии sudo Дополнительные параметры можно найти с помощью ключа -h. Примечание. Оставаться в системе как администратор ставит под угрозу безопасность сервера. Раньше администраторы использовали su (substitute user) для временного переключения на учетную запись администратора. Однако для команды su требуется вторая учетная запись пользователя и пароль, что не всегда возможно. Когда используется команда sudo, в системные журналы заносится метка времени. Пользователь может запускать команды с повышенными привилегиями в течение короткого времени (по умолчанию 15 минут). Если пользователь, не принадлежащий к sudo группе, пытается использовать команду sudo, это регистрируется как событие безопасности. Предоставление привилегий sudo Для большинства современных дистрибутивов Linux пользователь должен входить в группу sudo, sudoers или wheel, чтобы использовать команду sudo. По умолчанию однопользовательская система предоставляет своему пользователю права sudo. Система или сервер с несколькими учетными записями пользователей могут исключать некоторых пользователей из привилегий sudo. Рассмотрим как добавить пользователя в эту группу. RedHat и CentOS В Redhat и CentOS wheel группа контролирует пользователей sudo. Добавьте пользователя в группу wheel с помощью следующей команды: usermod –aG wheel [username] Замените [username] фактическим именем пользователя. Возможно, вам потребуется войти в систему как администратор или использовать команду su. Debian и Ubuntu В Debian и Ubuntu группа sudo (sudo group) контролирует пользователей sudo. Добавьте пользователя в группу sudo с помощью следующей команды: Использование visudo и группы sudoers В некоторых современных версиях Linux пользователи добавляются в файл sudoers для предоставления привилегий. Это делается с помощью команды visudo. Используйте команду visudo для редактирования файла конфигурации: sudo visudo Это откроет /etc/sudoers для редактирования. Чтобы добавить пользователя и предоставить полные права sudo, добавьте следующую строку: [username] ALL=(ALL:ALL) ALL Сохраните и выйдите из файла. Вот разбивка предоставленных привилегий sudo: [username] [any-hostname]=([run-as-username]:[run-as-groupname]) [commands-allowed] Примечание. Проще добавить пользователя в группу sudo или wheel, чтобы предоставить права sudo. Если вам нужно отредактировать файл конфигурации, делайте это только с помощью visudo. Приложение visudo предотвращает сбои, ошибки и неправильные настройки, которые могут нарушить работу вашей операционной системы. Тайм-аут пароля sudo По умолчанию sudo просит вас ввести пароль после нескольких минут бездействия. Изменить это время ожидания по умолчанию, можно отредактировав файл sudoers с помощью visudo и измените время ожидания, добавив строку как в примере, где 10 - это время ожидания, указанное в минутах: sudo visudo Defaults timestamp_timeout=10 Если вы хотите изменить время ожидания для определенного пользователя, то добавьте имя пользователя. Defaults:user_name timestamp_timeout=10 Примеры sudo в Linux Основное использование Sudo 1. Откройте окно терминала и попробуйте выполнить следующую команду: apt-get update 2. Вы должны увидеть сообщение об ошибке. У вас нет необходимых разрешений для запуска команды. 3. Попробуйте ту же команду с sudo: sudo apt-get update 4. При появлении запроса введите свой пароль. Система выполнит команду и обновит репозитории. Выполнить команду от имени другого пользователя 1. Чтобы запустить команду от имени другого пользователя, введите в терминале следующую команду: whoami 2. Система должна отображать ваше имя пользователя. Затем выполните следующую команду: sudo –u [другое_имя_пользователя] whoami 3. Введите пароль для другого пользователя, и команда whoami запустится и отобразит другого пользователя. Переключиться на root пользователя Эта команда переключает вашу командную строку на оболочку BASH от имени пользователя root: sudo bash Ваша командная строка должна измениться на: root@hostname:/home/[имя пользователя] Значение имени хоста будет сетевым именем этой системы. Имя пользователя будет текущим именем пользователя, вошедшим в систему. Выполнить предыдущие команды с помощью sudo В командной строке Linux хранятся записи о ранее выполненных командах. Доступ к этим записям можно получить, нажав стрелку вверх. Чтобы повторить последнюю команду с повышенными привилегиями, используйте: sudo !! Это также работает со старыми командами. Укажите исторический номер следующим образом: sudo !6 В этом примере повторяется 6-я запись в истории с командой sudo. Запуск нескольких команд в одной строке Соедините несколько команд вместе, разделенных точкой с запятой: sudo ls; whoami; hostname Добавить строку текста в существующий файл Добавление строки текста в файл часто используется для добавления имени репозитория программного обеспечения к исходному файлу без открытия файла для редактирования. Используйте следующий синтаксис с командами echo, sudo и tee: echo ‘string-of-text’ | sudo tee –a [path_to_file] Например: echo "deb http://nginx.org/packages/debian `lsb_release -cs` nginx" | sudo tee /etc/apt/sources.list.d/nginx.list Заключение Теперь вы узнали про команду sudo и про то, как ее использовать.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59