создайте сценарий Python, который подключается к диапазону IP-адресов на указанном порту c (SMTP) - PullRequest
0 голосов
/ 19 февраля 2020

Мне нужно создать скрипт с Python, который проверяет, существует ли список пользователей на SMTP-сервере (список IP-адресов серверов находится в файле).

Это мой скрипт запустить, но у меня есть ошибка в функции подключения сокета:

#!/usr/bin/python

import socket
import sys
import os

with open("smtp_ip.txt", "r") as ip:
        for IpTested in ip :
                print IpTested
                s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
                connect=s.connect(('IpTested', 25))
                banner=s.recv(1024)
                print "echec connect"
                with open("user.txt","r+") as username:
                        for user in username:
                                s.send('VRFY ' + user + '\r\n')
                                result=s.recv(1024)
                                print result
        s.close()       

ip.close()

, и это ошибка у меня:

root@kali:~/smtppython# ./smtpv2.py

Traceback (most recent call last):
  File "./smtpv2.py", line 12, in <module>
    connect=s.connect(('IpTested', 25))
  File "/usr/lib/python2.7/socket.py", line 228, in meth
    return getattr(self._sock,name)(*args)
socket.gaierror: [Errno -2] Name or service not known

1 Ответ

1 голос
/ 19 февраля 2020

Вместо

connect=s.connect(('IpTested', 25))

вы должны иметь

connect=s.connect((IpTested, 25))

, так как первый передает строку 'IpTested', а не переменную IpTested

Кроме того, вам не нужно

ip.close()

, потому что об этом заботится менеджер контекста (with open("smtp_ip.txt", "r") as ip:).

Обновление: и, начиная с IpTested это строка, прочитанная из файла, она содержит новую строку - вам нужно удалить ее, так:

connect = s.connect((IpTested.rstrip(), 25))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...