我正在用c语言开发一个代码,它使用curl实用程序简单地将文件FTP到FTP服务器上,方法如下:example现在我有一件简单的事情要做,指定curl使用服务器的特定接口(IP)进行上传,因为服务器的其他接口与其他套接字连接相关联。有什么办法吗?
s1ag04yj1#
curl似乎支持--interface选项
--interface
curl --interface eth0
v2g6jxz62#
对于来到这里寻找相同答案的任何人,除了wlan0或Raspberry/RPi上的任何非默认接口,您将需要sudo或以root身份运行。在我的例子中,我运行eth0和wlan0,但eth0是我的默认NIC。Ping没有sudo也能工作,curl没有足够详细的日志记录,只是说连接超时,只有在eth0上没有sudo才能工作。当错误显示"setsockopt SO_BINDTODEVICE:不允许操作"
vxqlmq5t3#
查看您的适配器,所有适配器都应该有一个IP地址,只需在curl查询中使用IP地址。在我的情况下,我只有一个真实的的适配器,所以我不确定如何指定辅助接口,所以我使用了grecurl--接口帮助,您可以指定IP地址--甚至更好
# ip a<enter> ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group de fault qlen 1000 link/ether 00:50:56:9e:2a:42 brd ff:ff:ff:ff:ff:ff inet 172.16.99.25/24 brd 172.16.99.255 scope global ens160 valid_lft forever preferred_lft forever inet 172.16.99.26/24 brd 172.16.99.255 scope global secondary ens160 valid_lft forever preferred_lft forever inet6 fe80::250:56ff:fe9e:2a42/64 scope link valid_lft forever preferred_lft forever eric@mx:~$ curl --help | grep interface --dns-interface <interface> Interface to use for DNS requests --interface <name> Use network INTERFACE (or address) # curl https://ipinfo.io/ip<enter> <This shows what your default external IP is> curl --interface 172.16.99.26 https://ipinfo.io/ip curl --interface 172.16.99.25 https://ipinfo.io/ip
在我的服务器上,我得到了不同的答案,因为我有(2)不同的NAT的外部IP不得不分享,也许这会帮助别人。
3条答案
按热度按时间s1ag04yj1#
curl似乎支持
--interface
选项v2g6jxz62#
对于来到这里寻找相同答案的任何人,除了wlan0或Raspberry/RPi上的任何非默认接口,您将需要sudo或以root身份运行。
在我的例子中,我运行eth0和wlan0,但eth0是我的默认NIC。Ping没有sudo也能工作,curl没有足够详细的日志记录,只是说连接超时,只有在eth0上没有sudo才能工作。当错误显示"setsockopt SO_BINDTODEVICE:不允许操作"
vxqlmq5t3#
查看您的适配器,所有适配器都应该有一个IP地址,只需在curl查询中使用IP地址。在我的情况下,我只有一个真实的的适配器,所以我不确定如何指定辅助接口,所以我使用了grecurl--接口帮助,您可以指定IP地址--甚至更好
在我的服务器上,我得到了不同的答案,因为我有(2)不同的NAT的外部IP
不得不分享,也许这会帮助别人。