Различия
Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
rdp:доступ-к-windows-rdp-по-e-mail [2020/12/20 01:26] 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 с содержанием: | ||
- | rrr | + | <file dos start.cmd> |
- | + | ||
- | <code> | + | |
cd C:\scripts\ | cd C:\scripts\ | ||
mail.py | mail.py | ||
- | <code> | + | </file> |
После чего дергайте скрипт через планировщик каждые 5 минут. | После чего дергайте скрипт через планировщик каждые 5 минут. |