Как привязать IP-адрес к telnetlib в Python
-
19-09-2019 - |
Вопрос
Код ниже привязывает IP-адрес к urllib, urllib2 и т. д.
import socket
true_socket = socket.socket
def bound_socket(*a, **k):
sock = true_socket(*a, **k)
sock.bind((sourceIP, 0))
return sock
socket.socket = bound_socket
Можно ли также привязать IP-адрес к telnetlib?
Решение
telnetlib
по крайней мере, в последних выпусках Python используется socket.create_connection
(см. исходники telnetlib здесь), но это также должно быть перехвачено вашим Monkeypatch (источники здесь -- вы увидите, что он использует простой идентификатор socket
но это именно тот модуль, который вы патчите).Конечно, обезьянье исправление всегда чрезвычайно хрупко (мельчайшая оптимизация в каком-нибудь будущем выпуске, повышающая глобальный поиск socket
в create_connection
, и ты поджарен... ;-) так что, может быть, тебе захочется обезьяний путь create_connection
непосредственно как умеренно более сильный подход.
Не связан с StackOverflow