Get available network interfaces for PHP cURL request
I am aware that I can specify a network interface or IP address for outgoing cURL connections using CURLOPT_INTERFACE
in PHP like this:
curl_setopt($curl, CURLOPT_INTERFACE, '192.168.0.1');
Is there a way to programmatically retrieve a list of all the available interfaces that are configured on a server? Currently I am doing this in bash:
cat /etc/network/interfaces
This is where network interfaces are configured on my Debian based server, but I would like to get this info inside a php script without needing shell access or read permissions to the file mentioned above - and ideally something that works in different server environments.
php curl
add a comment |
I am aware that I can specify a network interface or IP address for outgoing cURL connections using CURLOPT_INTERFACE
in PHP like this:
curl_setopt($curl, CURLOPT_INTERFACE, '192.168.0.1');
Is there a way to programmatically retrieve a list of all the available interfaces that are configured on a server? Currently I am doing this in bash:
cat /etc/network/interfaces
This is where network interfaces are configured on my Debian based server, but I would like to get this info inside a php script without needing shell access or read permissions to the file mentioned above - and ideally something that works in different server environments.
php curl
add a comment |
I am aware that I can specify a network interface or IP address for outgoing cURL connections using CURLOPT_INTERFACE
in PHP like this:
curl_setopt($curl, CURLOPT_INTERFACE, '192.168.0.1');
Is there a way to programmatically retrieve a list of all the available interfaces that are configured on a server? Currently I am doing this in bash:
cat /etc/network/interfaces
This is where network interfaces are configured on my Debian based server, but I would like to get this info inside a php script without needing shell access or read permissions to the file mentioned above - and ideally something that works in different server environments.
php curl
I am aware that I can specify a network interface or IP address for outgoing cURL connections using CURLOPT_INTERFACE
in PHP like this:
curl_setopt($curl, CURLOPT_INTERFACE, '192.168.0.1');
Is there a way to programmatically retrieve a list of all the available interfaces that are configured on a server? Currently I am doing this in bash:
cat /etc/network/interfaces
This is where network interfaces are configured on my Debian based server, but I would like to get this info inside a php script without needing shell access or read permissions to the file mentioned above - and ideally something that works in different server environments.
php curl
php curl
edited Nov 12 '18 at 18:22
miken32
24k94973
24k94973
asked Nov 12 '18 at 17:08
billynoahbillynoah
10.9k64366
10.9k64366
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
Assuming you've set up /etc/hosts
with appropriate entries, you should be able to get an array of IP addresses like this:
$ips = gethostbynamel(gethostname());
On my system, var_dump($ips)
returns this:
array(3)
[0]=>
string(9) "127.0.0.1"
[1]=>
string(9) "127.0.0.1"
[2]=>
string(15) "192.168.31.14"
gethostbynamel()
returns a list of IP addresses, unlike gethostbyname()
which just does a simple lookup and returns the first address it finds.
That's pretty awesome but not quite what I need because I can't necessarily rely on it being configured and configuring it would require sudo privs and shell access. All the same, I didn't know aboutgethostnamebyl()
so thanks for that tip.
– billynoah
Nov 12 '18 at 18:22
I think about the only other option is usingexec()
or friends to runifconfig
, which would also require configuration on the server side to allow it.
– miken32
Nov 12 '18 at 18:23
Assuming thatgethostnamebyl()
returns all potentially-available IPs (and doesn't leave any out), then you could, theoretically, run a simple curl request for each one usingCURLOPT_INTERFACE
, and the ones that don't have errors are the ones configured. You'd probably only want to do this once per execution (or even once per day and store the results somewhere like a file or DB).
– Anthony
Nov 12 '18 at 18:30
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53266951%2fget-available-network-interfaces-for-php-curl-request%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Assuming you've set up /etc/hosts
with appropriate entries, you should be able to get an array of IP addresses like this:
$ips = gethostbynamel(gethostname());
On my system, var_dump($ips)
returns this:
array(3)
[0]=>
string(9) "127.0.0.1"
[1]=>
string(9) "127.0.0.1"
[2]=>
string(15) "192.168.31.14"
gethostbynamel()
returns a list of IP addresses, unlike gethostbyname()
which just does a simple lookup and returns the first address it finds.
That's pretty awesome but not quite what I need because I can't necessarily rely on it being configured and configuring it would require sudo privs and shell access. All the same, I didn't know aboutgethostnamebyl()
so thanks for that tip.
– billynoah
Nov 12 '18 at 18:22
I think about the only other option is usingexec()
or friends to runifconfig
, which would also require configuration on the server side to allow it.
– miken32
Nov 12 '18 at 18:23
Assuming thatgethostnamebyl()
returns all potentially-available IPs (and doesn't leave any out), then you could, theoretically, run a simple curl request for each one usingCURLOPT_INTERFACE
, and the ones that don't have errors are the ones configured. You'd probably only want to do this once per execution (or even once per day and store the results somewhere like a file or DB).
– Anthony
Nov 12 '18 at 18:30
add a comment |
Assuming you've set up /etc/hosts
with appropriate entries, you should be able to get an array of IP addresses like this:
$ips = gethostbynamel(gethostname());
On my system, var_dump($ips)
returns this:
array(3)
[0]=>
string(9) "127.0.0.1"
[1]=>
string(9) "127.0.0.1"
[2]=>
string(15) "192.168.31.14"
gethostbynamel()
returns a list of IP addresses, unlike gethostbyname()
which just does a simple lookup and returns the first address it finds.
That's pretty awesome but not quite what I need because I can't necessarily rely on it being configured and configuring it would require sudo privs and shell access. All the same, I didn't know aboutgethostnamebyl()
so thanks for that tip.
– billynoah
Nov 12 '18 at 18:22
I think about the only other option is usingexec()
or friends to runifconfig
, which would also require configuration on the server side to allow it.
– miken32
Nov 12 '18 at 18:23
Assuming thatgethostnamebyl()
returns all potentially-available IPs (and doesn't leave any out), then you could, theoretically, run a simple curl request for each one usingCURLOPT_INTERFACE
, and the ones that don't have errors are the ones configured. You'd probably only want to do this once per execution (or even once per day and store the results somewhere like a file or DB).
– Anthony
Nov 12 '18 at 18:30
add a comment |
Assuming you've set up /etc/hosts
with appropriate entries, you should be able to get an array of IP addresses like this:
$ips = gethostbynamel(gethostname());
On my system, var_dump($ips)
returns this:
array(3)
[0]=>
string(9) "127.0.0.1"
[1]=>
string(9) "127.0.0.1"
[2]=>
string(15) "192.168.31.14"
gethostbynamel()
returns a list of IP addresses, unlike gethostbyname()
which just does a simple lookup and returns the first address it finds.
Assuming you've set up /etc/hosts
with appropriate entries, you should be able to get an array of IP addresses like this:
$ips = gethostbynamel(gethostname());
On my system, var_dump($ips)
returns this:
array(3)
[0]=>
string(9) "127.0.0.1"
[1]=>
string(9) "127.0.0.1"
[2]=>
string(15) "192.168.31.14"
gethostbynamel()
returns a list of IP addresses, unlike gethostbyname()
which just does a simple lookup and returns the first address it finds.
answered Nov 12 '18 at 18:15
miken32miken32
24k94973
24k94973
That's pretty awesome but not quite what I need because I can't necessarily rely on it being configured and configuring it would require sudo privs and shell access. All the same, I didn't know aboutgethostnamebyl()
so thanks for that tip.
– billynoah
Nov 12 '18 at 18:22
I think about the only other option is usingexec()
or friends to runifconfig
, which would also require configuration on the server side to allow it.
– miken32
Nov 12 '18 at 18:23
Assuming thatgethostnamebyl()
returns all potentially-available IPs (and doesn't leave any out), then you could, theoretically, run a simple curl request for each one usingCURLOPT_INTERFACE
, and the ones that don't have errors are the ones configured. You'd probably only want to do this once per execution (or even once per day and store the results somewhere like a file or DB).
– Anthony
Nov 12 '18 at 18:30
add a comment |
That's pretty awesome but not quite what I need because I can't necessarily rely on it being configured and configuring it would require sudo privs and shell access. All the same, I didn't know aboutgethostnamebyl()
so thanks for that tip.
– billynoah
Nov 12 '18 at 18:22
I think about the only other option is usingexec()
or friends to runifconfig
, which would also require configuration on the server side to allow it.
– miken32
Nov 12 '18 at 18:23
Assuming thatgethostnamebyl()
returns all potentially-available IPs (and doesn't leave any out), then you could, theoretically, run a simple curl request for each one usingCURLOPT_INTERFACE
, and the ones that don't have errors are the ones configured. You'd probably only want to do this once per execution (or even once per day and store the results somewhere like a file or DB).
– Anthony
Nov 12 '18 at 18:30
That's pretty awesome but not quite what I need because I can't necessarily rely on it being configured and configuring it would require sudo privs and shell access. All the same, I didn't know about
gethostnamebyl()
so thanks for that tip.– billynoah
Nov 12 '18 at 18:22
That's pretty awesome but not quite what I need because I can't necessarily rely on it being configured and configuring it would require sudo privs and shell access. All the same, I didn't know about
gethostnamebyl()
so thanks for that tip.– billynoah
Nov 12 '18 at 18:22
I think about the only other option is using
exec()
or friends to run ifconfig
, which would also require configuration on the server side to allow it.– miken32
Nov 12 '18 at 18:23
I think about the only other option is using
exec()
or friends to run ifconfig
, which would also require configuration on the server side to allow it.– miken32
Nov 12 '18 at 18:23
Assuming that
gethostnamebyl()
returns all potentially-available IPs (and doesn't leave any out), then you could, theoretically, run a simple curl request for each one using CURLOPT_INTERFACE
, and the ones that don't have errors are the ones configured. You'd probably only want to do this once per execution (or even once per day and store the results somewhere like a file or DB).– Anthony
Nov 12 '18 at 18:30
Assuming that
gethostnamebyl()
returns all potentially-available IPs (and doesn't leave any out), then you could, theoretically, run a simple curl request for each one using CURLOPT_INTERFACE
, and the ones that don't have errors are the ones configured. You'd probably only want to do this once per execution (or even once per day and store the results somewhere like a file or DB).– Anthony
Nov 12 '18 at 18:30
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53266951%2fget-available-network-interfaces-for-php-curl-request%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown