Приведенный ниже код связывает 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
, но именно в том модуле, в котором вы обезьяны). Конечно, monkeypatching всегда чрезвычайно хрупок (самая маленькая оптимизация в какой-то будущей версии, поднимающая глобальный поиск socket
в create_connection
, и вы тосты...;-), так что, возможно, вам захочется перейти в monkeypath create_connection
непосредственно как скромно более сильный подход.