【发布时间】:2016-01-09 01:31:24
【问题描述】:
我正在用 c 开发一个代码,它只是通过使用 curl 实用程序来对 FTP 服务器上的文件进行 FTP 传输,方法如下: example
现在我有一件简单的事情要做,指定 curl 使用服务器的特定接口 (IP) 进行上传,因为服务器的其他接口与其他套接字连接相关联。
有什么办法吗?
【问题讨论】:
我正在用 c 开发一个代码,它只是通过使用 curl 实用程序来对 FTP 服务器上的文件进行 FTP 传输,方法如下: example
现在我有一件简单的事情要做,指定 curl 使用服务器的特定接口 (IP) 进行上传,因为服务器的其他接口与其他套接字连接相关联。
有什么办法吗?
【问题讨论】:
好像 curl 支持 --interface 选项
curl --interface eth0
【讨论】:
对于来到这里寻找相同答案的任何人,但对于 wlan0 或 Raspberry/RPi 上的任何非默认界面,您需要 sudo 或以 root 身份运行。
在我的例子中,我运行的是 eth0 和 wlan0,但 eth0 是我的默认 NIC。 Ping 在没有 sudo 的情况下工作,curl 没有足够详细的日志记录,只是说连接超时并且只能在 eth0 上没有 sudo 的情况下工作。当错误提示“setsockopt SO_BINDTODEVICE: Operation not allowed”时,Traceroute 终于让我得到了答案
【讨论】:
man curl 的接口部分。