Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
|
rdp:доступ-к-windows-rdp-по-e-mail [2020/12/20 01:25] admin |
rdp:доступ-к-windows-rdp-по-e-mail [2020/12/20 14:38] (текущий) admin |
||
|---|---|---|---|
| Строка 3: | Строка 3: | ||
| Сразу оговоримся: | Сразу оговоримся: | ||
| - | Из-за самоизоляции большей части бухгалтеров пришлось работать удаленно. Самым быстрым решением был проброс RDP наружу. Что бы в тот же час сервер не начали ломать, | + | Из-за самоизоляции большей части бухгалтеров пришлось работать удаленно. Самым быстрым решением был проброс RDP наружу. Что бы в тот же час сервер не начали ломать, |
| Корпоративная почта располагается на сервисе ЯндексКоннект. Для начала создал ящик 1с@example.com и в нем папку access. Правилами обработки входящей почты указал, | Корпоративная почта располагается на сервисе ЯндексКоннект. Для начала создал ящик 1с@example.com и в нем папку access. Правилами обработки входящей почты указал, | ||
| Строка 11: | Строка 11: | ||
| Теперь создаем папку scripts, и в нее кладем файл mail.py с данным содержанием (используется Pyhon 3.7×64): | Теперь создаем папку scripts, и в нее кладем файл mail.py с данным содержанием (используется Pyhon 3.7×64): | ||
| - | <code python> | + | <file python |
| import imaplib | import imaplib | ||
| import email | import email | ||
| Строка 20: | Строка 20: | ||
| import ipaddress | import ipaddress | ||
| import os | import os | ||
| - | + | ||
| # | # | ||
| imap = imaplib.IMAP4_SSL(' | imap = imaplib.IMAP4_SSL(' | ||
| - | imap.login(' | + | imap.login(' |
| - | + | ||
| #выбор каталога | #выбор каталога | ||
| imap.select(' | imap.select(' | ||
| - | + | ||
| # | # | ||
| r, d = imap.search(None, | r, d = imap.search(None, | ||
| Строка 35: | Строка 35: | ||
| matches = re.finditer(regex, | matches = re.finditer(regex, | ||
| for matchNum, match in enumerate(matches, | for matchNum, match in enumerate(matches, | ||
| - | | + | carray.extend (" |
| i = len(carray) | i = len(carray) | ||
| ii=0 | ii=0 | ||
| - | + | ||
| def check_ip(ip): | def check_ip(ip): | ||
| try: | try: | ||
| Строка 46: | Строка 46: | ||
| else: | else: | ||
| return 1 | return 1 | ||
| - | + | ||
| - | while ii < i: | + | while ii < i: |
| - | result, data = imap.search(None, | + | result, data = imap.search(None, |
| - | ids = data[0] # Получаем сроку номеров писем | + | ids = data[0] # Получаем сроку номеров писем |
| - | id_list = ids.split() # Разделяем ID писем | + | id_list = ids.split() # Разделяем ID писем |
| - | latest_email_id = id_list[-1] # Берем последний ID | + | latest_email_id = id_list[-1] # Берем последний ID |
| - | result, data = imap.fetch(latest_email_id, | + | result, data = imap.fetch(latest_email_id, |
| - | raw_email = data[0][1] # Тело письма в необработанном виде | + | raw_email = data[0][1] # Тело письма в необработанном виде |
| - | email_message = email.message_from_bytes(raw_email) | + | email_message = email.message_from_bytes(raw_email) |
| - | efrom = make_header(decode_header(email_message[' | + | efrom = make_header(decode_header(email_message[' |
| - | esubject = make_header(decode_header(email_message[' | + | esubject = make_header(decode_header(email_message[' |
| - | sesubject = str(esubject) | + | sesubject = str(esubject) |
| - | edate = email_message[' | + | edate = email_message[' |
| - | ipv = check_ip(str(esubject)) | + | ipv = check_ip(str(esubject)) |
| - | f = open(' | + | f = open(' |
| - | f.write(edate) | + | f.write(edate) |
| - | f.write(' | + | f.write(' |
| - | f.write(str(efrom)) | + | f.write(str(efrom)) |
| - | f.write(' | + | f.write(' |
| - | f.write(str(esubject)) | + | f.write(str(esubject)) |
| - | f.write(' | + | f.write(' |
| - | f.close() | + | |
| - | print(' | + | |
| - | if ipv == 1: | + | |
| - | f = open(' | + | |
| - | f.write(sesubject) | + | |
| - | f.write(',' | + | |
| - | f.close() | + | |
| - | print(' | + | |
| - | else: | + | |
| - | f = open(' | + | |
| - | f.write(' | + | |
| - | f.write(sesubject) | + | |
| - | f.close() | + | |
| - | print(' | + | |
| - | f = open(' | + | |
| - | f.write(' | + | |
| - | f.close() | + | |
| - | + | ||
| - | ii = ii+1 | + | |
| - | if ii == i: | + | |
| - | | + | |
| - | + | ||
| - | f = open(' | + | |
| - | ipslist = f.read().split("," | + | |
| f.close() | f.close() | ||
| - | ips = (',' | + | |
| - | ips = str(ips) | + | if ipv == 1: |
| - | os.system(' | + | f = open(' |
| - | </code> | + | f.write(sesubject) |
| + | f.write(',' | ||
| + | f.close() | ||
| + | print(' | ||
| + | else: | ||
| + | f = open(' | ||
| + | f.write(' | ||
| + | f.write(sesubject) | ||
| + | f.close() | ||
| + | print(' | ||
| + | f = open(' | ||
| + | f.write(' | ||
| + | f.close() | ||
| + | |||
| + | ii = ii+1 | ||
| + | if ii == i: | ||
| + | | ||
| + | |||
| + | f = open(' | ||
| + | ipslist = f.read().split("," | ||
| + | f.close() | ||
| + | ips = (',' | ||
| + | ips = str(ips) | ||
| + | os.system(' | ||
| + | </file> | ||
| Для корректного работы скрипта требуется: | Для корректного работы скрипта требуется: | ||
| Строка 105: | Строка 105: | ||
| - Наконец создать файл start.cmd с содержанием: | - Наконец создать файл start.cmd с содержанием: | ||
| - | <code> | + | <file dos start.cmd> |
| cd C:\scripts\ | cd C:\scripts\ | ||
| mail.py | mail.py | ||
| - | <code> | + | </file> |
| После чего дергайте скрипт через планировщик каждые 5 минут. | После чего дергайте скрипт через планировщик каждые 5 минут. | ||