pycurl 및 컬은 sudo 없이는 작동하지 않습니다.

pycurl 및 컬은 sudo 없이는 작동하지 않습니다.

내 영어가 서툴러서 미안해

두 개 이상의 네트워크 인터페이스가 있고 특정 인터페이스로 요청을 보내고 싶습니다. 여기 pycurl을 사용한 내 코드가 있습니다.

def curl_post(url, data, iface=None):
    c = pycurl.Curl()
    buffer = BytesIO()
    c.setopt(pycurl.URL, url)
    c.setopt(pycurl.POST, True)
    c.setopt(pycurl.HTTPHEADER, ['Content-Type: application/json'])
    c.setopt(pycurl.TIMEOUT, 10)
    c.setopt(pycurl.WRITEFUNCTION, buffer.write)
    c.setopt(pycurl.POSTFIELDS, data)
    if iface:
        c.setopt(pycurl.INTERFACE, iface)
    c.perform()

    # Json response
    resp = buffer.getvalue().decode('UTF-8')

    #  Check response is a JSON if not there was an error
    try:
        resp = json.loads(resp)
    except json.decoder.JSONDecodeError:
        pass

    buffer.close()
    c.close()
    return resp
dat = {"id": 52, "configuration": [{"eno1": {"address": "192.168.1.1"}}]}
res = curl_post("https://emapp.cc/get_my_ip", json.dumps(dat), "enp0s20u1u3")
print(res)

sudo로 Python 코드를 실행하면 매우 잘 작동합니다. 하지만 sudo가 없으면 시간 초과 오류가 발생합니다.

bash에서도 :

curl --interface enp0s20u1u3 google.com

sudo 없이는 작동하지 않습니다.

참고: 내 기본 인터페이스는 enp4s0f2이며 이를 내 코드에 설정하면 sudo가 필요하지 않습니다.

관련 정보