Форум русскоязычного сообщества Ubuntu


Автор Тема: Напишите мне скрипт за деньги  (Прочитано 414 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Ввысь

  • Автор темы
  • Активист
  • *
  • Сообщений: 407
    • Просмотр профиля
Здравствуйте.

Нужен скрипт.
Скрипт висит в процессах и отслеживает icmp пакеты (пинг).
Как только он получает 100 пакетов, то на почту приходит письмо с ip с которого пинговали.
Спасибо.

Оффлайн archuser

  • Активист
  • *
  • Сообщений: 642
    • Просмотр профиля
Re: Напишите мне скрипт за деньги
« Ответ #1 : 20 Май 2021, 20:32:03 »
Как только он получает 100 пакетов, то на почту приходит письмо с ip с которого пинговали.
100 пакетов с одного ip или с разных? Если с одного IP, то задачу можно решить, как в скрипте, приаттаченном к сообщению. В качестве почтового сервера отправителя используется smtp.gmail.com. В переменных gmail_user, gmail_password, to укажите свой гугловский email, пароль и целевой адрес электронной почты. Гугл также требует включить "небезопасные приложения". Скрипт необходимо запускать с привилегиями суперпользователя. После получения 100 пакетов для одного ip-адреса счетчик для него сбрасывается, т.е. если будет получено 500 icmp сообщений с одного адреса, то будет отправлено 5 сообщений. В любом случае логику работы можете сами подправить в скрипте.
« Последнее редактирование: 21 Май 2021, 15:00:21 от archuser »

Оффлайн Ввысь

  • Автор темы
  • Активист
  • *
  • Сообщений: 407
    • Просмотр профиля
Re: Напишите мне скрипт за деньги
« Ответ #2 : 24 Май 2021, 12:05:44 »
archuser, запустил, выдает это.

(Нажмите, чтобы показать/скрыть)

но я использовал не гуглопочту, а яндекс, но с такими настройками письма отправляются. Подскажите, может быть в этом причина?

      server = smtplib.SMTP_SSL('smtps://ящик@домен@smtp.yandex.ru', 465)

запустил с гуглоящиком

(Нажмите, чтобы показать/скрыть)

такая же беда
« Последнее редактирование: 24 Май 2021, 13:04:23 от Ввысь »

Оффлайн archuser

  • Активист
  • *
  • Сообщений: 642
    • Просмотр профиля
Re: Напишите мне скрипт за деньги
« Ответ #3 : 24 Май 2021, 13:13:02 »
Ввысь,
Гугл также требует включить "небезопасные приложения"
Тоже самое касается и yandex. Для yandex'а перейдите по ссылке и поставьте галочку "Портальный пароль"

Оффлайн Ввысь

  • Автор темы
  • Активист
  • *
  • Сообщений: 407
    • Просмотр профиля
Re: Напишите мне скрипт за деньги
« Ответ #4 : 24 Май 2021, 13:56:24 »
archuser, это я сразу сделал.



Оффлайн archuser

  • Активист
  • *
  • Сообщений: 642
    • Просмотр профиля
Re: Напишите мне скрипт за деньги
« Ответ #5 : 24 Май 2021, 14:06:43 »
Ввысь, тогда замените строки:
except:
    print('Something went wrong...')
на следующие:
    except smtplib.SMTPHeloError:
        print("The server didn’t reply properly to the HELO greeting")
    except smtplib.SMTPAuthenticationError:
        print("The server didn’t accept the username/password combination.")
    except smtplib.SMTPNotSupportedError:
        print("The AUTH command is not supported by the server.")
    except smtplib.SMTPException:
        print("No suitable authentication method was found.")
    except:
        print("Something went wrong...")
Блоки except должны быть выравнены (по количеству отступов от начала строки) по блоку try. Запустите скрипт и покажите его вывод.
P.S. У меня работает и google, и yandex в качестве почтовых серверов отправителя.
« Последнее редактирование: 24 Май 2021, 16:22:32 от archuser »

Оффлайн Ввысь

  • Автор темы
  • Активист
  • *
  • Сообщений: 407
    • Просмотр профиля
Re: Напишите мне скрипт за деньги
« Ответ #6 : 24 Май 2021, 14:53:02 »
archuser, вроде все верно делаю, но при запуске получаю ошибку. Строки выровнял.



sudo python send_ips.py
  File "send_ips.py", line 42
SyntaxError: Non-ASCII character '\xe2' in file send_ips.py on line 42, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

убираю строки

except SMTPHeloError:
        print('The server didn’t reply properly to the HELO greeting')
    except SMTPAuthenticationError:
        print('The server didn’t accept the username/password combination.')

ошибка пропадает, сам найти решение пока не смог.

Оффлайн SergeyIT

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5215
  • Все по палатам!
    • Просмотр профиля
Re: Напишите мне скрипт за деньги
« Ответ #7 : 24 Май 2021, 15:08:35 »
Ввысь, может в кавычках дело 'The server didn’t - напиши did not
Извините, я все еще учусь

Оффлайн archuser

  • Активист
  • *
  • Сообщений: 642
    • Просмотр профиля
Re: Напишите мне скрипт за деньги
« Ответ #8 : 24 Май 2021, 15:10:04 »
SergeyIT, точно  ;D

Оффлайн Ввысь

  • Автор темы
  • Активист
  • *
  • Сообщений: 407
    • Просмотр профиля
Re: Напишите мне скрипт за деньги
« Ответ #9 : 24 Май 2021, 15:53:40 »
SergeyIT, излечилось)

archuser, после отсчета необходимого количества пингов выдает это

Traceback (most recent call last):
  File "send_ips.py", line 64, in <module>
    listen()
  File "send_ips.py", line 61, in listen
    addrs[addr[0]] = addrs.get(addr[0], 0) + 1
  File "send_ips.py", line 10, in __setitem__
    send_email(self, key)
  File "send_ips.py", line 41, in send_email
    except SMTPHeloError:
NameError: global name 'SMTPHeloError' is not defined

Проверяю на яндекс ящике.

Может так будет проще, вместо всей этой канители с отправкой туда запихать строку
echo | mutt < /тут ip -s "Заголовок письма" -- ящик@ya.ru
« Последнее редактирование: 24 Май 2021, 16:00:41 от Ввысь »

Оффлайн archuser

  • Активист
  • *
  • Сообщений: 642
    • Просмотр профиля
Re: Напишите мне скрипт за деньги
« Ответ #10 : 24 Май 2021, 16:13:32 »
Ввысь, это моя ошибка. Извините. Везде, где упоминается имя класса исключения добавить префикс модуля smtplib, т.е. заменить except SMTPHeloError: на except smtplib.SMTPHeloError: и т.д.:
except smtplib.SMTPHeloError:
    print("The server didn’t reply properly to the HELO greeting")
except smtplib.SMTPAuthenticationError:
    print("The server didn’t accept the username/password combination.")
except smtplib.SMTPNotSupportedError:
    print("The AUTH command is not supported by the server.")
except smtplib.SMTPException:
    print("No suitable authentication method was found.")
except:
    print("Something went wrong...")

Оффлайн Ввысь

  • Автор темы
  • Активист
  • *
  • Сообщений: 407
    • Просмотр профиля
Re: Напишите мне скрипт за деньги
« Ответ #11 : 24 Май 2021, 16:35:42 »
archuser, вставил

    except smtplib.SMTPHeloError:
      print("The server did not reply properly to the HELO greeting")
    except smtplib.SMTPAuthenticationError:
      print("The server did not accept the username/password combination.")
    except smtplib.SMTPNotSupportedError:
      print("The AUTH command is not supported by the server.")
    except smtplib.SMTPException:
      print("No suitable authentication method was found.")
    except:
      print("Something went wrong...")


запуск без ошибок, отсчет, ошибка
Traceback (most recent call last):
  File "send_ips.py", line 64, in <module>
    listen()
  File "send_ips.py", line 61, in listen
    addrs[addr[0]] = addrs.get(addr[0], 0) + 1
  File "send_ips.py", line 10, in __setitem__
    send_email(self, key)
  File "send_ips.py", line 45, in send_email
    except smtplib.SMTPNotSupportedError:
AttributeError: 'module' object has no attribute 'SMTPNotSupportedError'


Оффлайн archuser

  • Активист
  • *
  • Сообщений: 642
    • Просмотр профиля
Re: Напишите мне скрипт за деньги
« Ответ #12 : 24 Май 2021, 17:12:06 »
запуск без ошибок, отсчет, ошибка
Потому что запускаете скрипт под управление python2, а не python3.

Оффлайн Ввысь

  • Автор темы
  • Активист
  • *
  • Сообщений: 407
    • Просмотр профиля
Re: Напишите мне скрипт за деньги
« Ответ #13 : 24 Май 2021, 17:37:40 »
archuser, sudo python3 send_ips.py , вернулся к ошибке, при каждом срабатывании выплевывает это

sudo python3 send_ips.py
Something went wrong...
Something went wrong...
Something went wrong...
Something went wrong...

Оффлайн xuser73

  • Активист
  • *
  • Сообщений: 581
    • Просмотр профиля
Re: Напишите мне скрипт за деньги
« Ответ #14 : 24 Май 2021, 18:09:39 »
А если попробовать заглушить строки
    #except:
        #print("Something went wrong...")
и посмотреть на что матерится
Настоящему коту всегда март.

 

Страница сгенерирована за 0.095 секунд. Запросов: 25.