• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

Подключение к ip и получение статуса кода

  • Автор темы Автор темы Vlg
  • Дата начала Дата начала
  • Теги Теги
    python

Vlg

Green Team
02.11.2019
117
1
BIT
19
Короче мне на питоне нужно подключиться к ip-адресу под определенным портом и получить статус кода. Модуль сокет будет приемлем?
 
Решение
Вы не совсем поняли что я хочу сделать. Итак, у меня есть несколько ip камер и я хочу через терминал проверить их активность(если они в сети то подключение успешное, если нет, то соответственно ,нет) не больше не меньше.
Так чем http/urllib не подходят и что именно я "не совсем понял"? Я не думаю, что сокеты будут намного быстрее.

Python:
import http.client

conn = http.client.HTTPSConnection("google.com")
conn.request("GET", "/")
r1 = conn.getresponse()
print(r1.status)
Модуль сокет позволит подключиться.
Только какой статус код вы ожидаете увидеть?
Что за приложение/сервис вам должно его отправить?
 
Модуль сокет позволит подключиться.
Только какой статус код вы ожидаете увидеть?
Что за приложение/сервис вам должно его отправить?
Это должно быть ip камера (порты 80, 5000,8008...) А статус кода это статус подключения (200, 301,302,404,405 и до)
 
Это должно быть ip камера (порты 80, 5000,8008...) А статус кода это статус подключения (200, 301,302,404,405 и до)
Статус подключения 200, 301,302,404,405 отправляет веб сервер, он работает уровнем выше, чем сокет.
Уровень сокетов позволит вам понять, открыт порт или нет.
 
Статус подключения 200, 301,302,404,405 отправляет веб сервер, он работает уровнем выше, чем сокет.
Уровень сокетов позволит вам понять, открыт порт или нет.
Тоесть если я подключусь по ipпод портом и будет успешное подключение то порт открыт? А как понять что подключение успешное?
 
Тоесть если я подключусь по ipпод портом и будет успешное подключение то порт открыт? А как понять что подключение успешное?
Если подключение не вызвало ошибку, значит, вы подключились.
 
Зачем вам сокеты? Если вы дёргаете http, то можно использовать что-то более подходящее - , , .
 
Если подключение не вызвало ошибку, значит, вы подключились.
У этого модуля множество переменных для подключения к сети. Какие взять?

Зачем вам сокеты? Если вы дёргаете http, то можно использовать что-то более подходящее - , , .
Вы не совсем поняли что я хочу сделать. Итак, у меня есть несколько ip камер и я хочу через терминал проверить их активность(если они в сети то подключение успешное, если нет, то соответственно ,нет) не больше не меньше.

Код должен быт простым для интерпретатора, быстрым, производительным. Как вы поняли необходима высокая скорость. Поэтому я выбрал сокет как наиболее шустрый вариант из мне знакомых.
 
Вы не совсем поняли что я хочу сделать. Итак, у меня есть несколько ip камер и я хочу через терминал проверить их активность(если они в сети то подключение успешное, если нет, то соответственно ,нет) не больше не меньше.
Так чем http/urllib не подходят и что именно я "не совсем понял"? Я не думаю, что сокеты будут намного быстрее.

Python:
import http.client

conn = http.client.HTTPSConnection("google.com")
conn.request("GET", "/")
r1 = conn.getresponse()
print(r1.status)
 
Решение
У этого модуля множество переменных для подключения к сети. Какие взять?
Открываете и выбираете нужный вам:
1612985835001.png

Желательно обернуть s.connect в блок исключений try/except
 
Простой код для проверки подключения к IP с определённым портом. В последней строке впишите свои данные

Python:
import socket


def port_scan(hostname, port_num):
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.settimeout(0.8)
    try:
        s.connect((hostname, port_num))
        print(hostname, 'Port:', port_num, "is open")
    except socket.error:
        print(hostname, 'Port:', port_num, "is closed")
    finally:
        s.close()


port_scan('127.0.0.1', 80)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!