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

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

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)

f22

Codeby Academy
Gold Team
05.05.2019
1 940
228
BIT
1 771
Модуль сокет позволит подключиться.
Только какой статус код вы ожидаете увидеть?
Что за приложение/сервис вам должно его отправить?
 

Vlg

Green Team
02.11.2019
117
1
BIT
19
Модуль сокет позволит подключиться.
Только какой статус код вы ожидаете увидеть?
Что за приложение/сервис вам должно его отправить?
Это должно быть ip камера (порты 80, 5000,8008...) А статус кода это статус подключения (200, 301,302,404,405 и до)
 

f22

Codeby Academy
Gold Team
05.05.2019
1 940
228
BIT
1 771
Это должно быть ip камера (порты 80, 5000,8008...) А статус кода это статус подключения (200, 301,302,404,405 и до)
Статус подключения 200, 301,302,404,405 отправляет веб сервер, он работает уровнем выше, чем сокет.
Уровень сокетов позволит вам понять, открыт порт или нет.
 

Vlg

Green Team
02.11.2019
117
1
BIT
19
Статус подключения 200, 301,302,404,405 отправляет веб сервер, он работает уровнем выше, чем сокет.
Уровень сокетов позволит вам понять, открыт порт или нет.
Тоесть если я подключусь по ipпод портом и будет успешное подключение то порт открыт? А как понять что подключение успешное?
 

f22

Codeby Academy
Gold Team
05.05.2019
1 940
228
BIT
1 771
Тоесть если я подключусь по ipпод портом и будет успешное подключение то порт открыт? А как понять что подключение успешное?
Если подключение не вызвало ошибку, значит, вы подключились.
 

Pernat1y

Well-known member
05.04.2018
1 443
135
BIT
0
Зачем вам сокеты? Если вы дёргаете http, то можно использовать что-то более подходящее - , , .
 

Vlg

Green Team
02.11.2019
117
1
BIT
19
Если подключение не вызвало ошибку, значит, вы подключились.
У этого модуля множество переменных для подключения к сети. Какие взять?

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

Код должен быт простым для интерпретатора, быстрым, производительным. Как вы поняли необходима высокая скорость. Поэтому я выбрал сокет как наиболее шустрый вариант из мне знакомых.
 

Pernat1y

Well-known member
05.04.2018
1 443
135
BIT
0
Вы не совсем поняли что я хочу сделать. Итак, у меня есть несколько ip камер и я хочу через терминал проверить их активность(если они в сети то подключение успешное, если нет, то соответственно ,нет) не больше не меньше.
Так чем http/urllib не подходят и что именно я "не совсем понял"? Я не думаю, что сокеты будут намного быстрее.

Python:
import http.client

conn = http.client.HTTPSConnection("google.com")
conn.request("GET", "/")
r1 = conn.getresponse()
print(r1.status)
 
Решение

f22

Codeby Academy
Gold Team
05.05.2019
1 940
228
BIT
1 771
У этого модуля множество переменных для подключения к сети. Какие взять?
Открываете и выбираете нужный вам:
1612985835001.png

Желательно обернуть s.connect в блок исключений try/except
 

explorer

Platinum
05.08.2018
1 080
2 475
BIT
0
Простой код для проверки подключения к 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)
 
Мы в соцсетях:

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