How to display the IP address of the default Interface with Internet connection?
I need to create a script that outputs the internal IP address, that is configured as the default Interface.
networking scripting ip ifconfig
|
show 1 more comment
I need to create a script that outputs the internal IP address, that is configured as the default Interface.
networking scripting ip ifconfig
Do you mean the one used for sending to the default gateway?
– Hauke Laging
Nov 9 '14 at 18:02
possible duplicate of How can I get my external IP address in bash?
– jasonwryan
Nov 9 '14 at 18:03
1
@jasonwryan not a dupe (or not a dupe of that one anyway), the OP wants the internal IP, not the external.
– terdon♦
Nov 9 '14 at 18:11
Hauke, this might be it, if the interpretation of the "default" value from the route command is that that is.
– Marcello de Sales
Nov 9 '14 at 18:11
1
@MarcellodeSales no, it has no dependencies. It is just looking for something different. You are showing how to get the IP of a machine in the internal network while the dupe is about getting the external IP. Two very different things. Jason was confused because your original question was asking for a "public" IP which is not what your answer returns.
– terdon♦
Nov 9 '14 at 18:17
|
show 1 more comment
I need to create a script that outputs the internal IP address, that is configured as the default Interface.
networking scripting ip ifconfig
I need to create a script that outputs the internal IP address, that is configured as the default Interface.
networking scripting ip ifconfig
networking scripting ip ifconfig
edited Nov 9 '14 at 18:12
terdon♦
130k32254432
130k32254432
asked Nov 9 '14 at 17:59
Marcello de SalesMarcello de Sales
14816
14816
Do you mean the one used for sending to the default gateway?
– Hauke Laging
Nov 9 '14 at 18:02
possible duplicate of How can I get my external IP address in bash?
– jasonwryan
Nov 9 '14 at 18:03
1
@jasonwryan not a dupe (or not a dupe of that one anyway), the OP wants the internal IP, not the external.
– terdon♦
Nov 9 '14 at 18:11
Hauke, this might be it, if the interpretation of the "default" value from the route command is that that is.
– Marcello de Sales
Nov 9 '14 at 18:11
1
@MarcellodeSales no, it has no dependencies. It is just looking for something different. You are showing how to get the IP of a machine in the internal network while the dupe is about getting the external IP. Two very different things. Jason was confused because your original question was asking for a "public" IP which is not what your answer returns.
– terdon♦
Nov 9 '14 at 18:17
|
show 1 more comment
Do you mean the one used for sending to the default gateway?
– Hauke Laging
Nov 9 '14 at 18:02
possible duplicate of How can I get my external IP address in bash?
– jasonwryan
Nov 9 '14 at 18:03
1
@jasonwryan not a dupe (or not a dupe of that one anyway), the OP wants the internal IP, not the external.
– terdon♦
Nov 9 '14 at 18:11
Hauke, this might be it, if the interpretation of the "default" value from the route command is that that is.
– Marcello de Sales
Nov 9 '14 at 18:11
1
@MarcellodeSales no, it has no dependencies. It is just looking for something different. You are showing how to get the IP of a machine in the internal network while the dupe is about getting the external IP. Two very different things. Jason was confused because your original question was asking for a "public" IP which is not what your answer returns.
– terdon♦
Nov 9 '14 at 18:17
Do you mean the one used for sending to the default gateway?
– Hauke Laging
Nov 9 '14 at 18:02
Do you mean the one used for sending to the default gateway?
– Hauke Laging
Nov 9 '14 at 18:02
possible duplicate of How can I get my external IP address in bash?
– jasonwryan
Nov 9 '14 at 18:03
possible duplicate of How can I get my external IP address in bash?
– jasonwryan
Nov 9 '14 at 18:03
1
1
@jasonwryan not a dupe (or not a dupe of that one anyway), the OP wants the internal IP, not the external.
– terdon♦
Nov 9 '14 at 18:11
@jasonwryan not a dupe (or not a dupe of that one anyway), the OP wants the internal IP, not the external.
– terdon♦
Nov 9 '14 at 18:11
Hauke, this might be it, if the interpretation of the "default" value from the route command is that that is.
– Marcello de Sales
Nov 9 '14 at 18:11
Hauke, this might be it, if the interpretation of the "default" value from the route command is that that is.
– Marcello de Sales
Nov 9 '14 at 18:11
1
1
@MarcellodeSales no, it has no dependencies. It is just looking for something different. You are showing how to get the IP of a machine in the internal network while the dupe is about getting the external IP. Two very different things. Jason was confused because your original question was asking for a "public" IP which is not what your answer returns.
– terdon♦
Nov 9 '14 at 18:17
@MarcellodeSales no, it has no dependencies. It is just looking for something different. You are showing how to get the IP of a machine in the internal network while the dupe is about getting the external IP. Two very different things. Jason was confused because your original question was asking for a "public" IP which is not what your answer returns.
– terdon♦
Nov 9 '14 at 18:17
|
show 1 more comment
7 Answers
7
active
oldest
votes
Here's another slightly terser method using procfs
(assumes you're using Linux):
default_iface=$(awk '$2 == 00000000 { print $1 }' /proc/net/route)
ip addr show dev "$default_iface" | awk '$1 ~ /^inet/ { sub("/.*", "", $2); print $2 }'
This returns both the IPv4 and (if available) the IPv6 address of the interface. You can change the test if you only want one or the other (look for inet
for IPv4, and inet6
for IPv6).
$ default_iface=$(awk '$2 == 00000000 { print $1 }' /proc/net/route)
$ ip addr show dev "$default_iface" | awk '$1 ~ /^inet/ { sub("/.*", "", $2); print $2 }'
10.0.2.15
fe80::a00:27ff:fe45:b085
$ ip addr show dev "$default_iface" | awk '$1 == "inet" { sub("/.*", "", $2); print $2 }'
10.0.2.15
$ ip addr show dev "$default_iface" | awk '$1 == "inet6" { sub("/.*", "", $2); print $2 }'
fe80::a00:27ff:fe45:b085
add a comment |
Here's what I wrote:
- Get the default interface from the "route" command.
It will print out which interface is the "default". For my host, I need to get the last column of the default line.
[root@pppdc9prd3ga mdesales]# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.4.0 * 255.255.252.0 U 0 0 0 bridge0
10.132.60.0 * 255.255.252.0 U 0 0 0 eth4
link-local * 255.255.0.0 U 1002 0 0 eth4
link-local * 255.255.0.0 U 1003 0 0 bridge0
default 10.132.60.1 0.0.0.0 UG 0 0 0 eth4
- Use "ifconfig" to retrieve the IP address of that interface.
Just getting the addr: value.
[root@pppdc9prd3ga mdesales]# ifconfig eth4
eth4 Link encap:Ethernet HWaddr 00:50:56:01:42:91
inet addr:10.132.63.191 Bcast:10.132.63.255 Mask:255.255.252.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1346288 errors:0 dropped:0 overruns:0 frame:0
TX packets:438844 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:276243478 (263.4 MiB) TX bytes:116188062 (110.8 MiB)
So here's the script I came up with.
/app/myPublicIp.sh
defaultInterface=$(route | grep default | awk '{print $(NF)}')
ifconfig $defaultInterface | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}'
Here's it executing:
/app/ipFor.sh
10.132.63.191
Hope it helps!
Nice, +1. You could simplify (well, shorten it anyway) that toifconfig $(route | grep -oP '^default.*s+K.*') | grep -oP 'inet addr:K[^s]+')
– terdon♦
Nov 9 '14 at 18:15
If you're going to do this on Linux, you might consider using procfs instead of parsing :-)
– Chris Down
Nov 9 '14 at 18:26
@ChrisDown... would that be via /proc/net? Yeah, this is for a Docker cluster.
– Marcello de Sales
Nov 9 '14 at 18:39
@MarcellodeSales Yeah,/proc/net/route
. I've posted an answer to that effect.
– Chris Down
Nov 9 '14 at 18:51
add a comment |
Lots of good answers here, but wanted to throw in my usual approach:
The simplest solution is to get the route for a public internet address:
$ ip route get 1.1.1.1 | grep -oP 'src KS+'
192.168.0.20
Another solution is to get the default gateway, and then get the IP addr used to communicate with that gateway:
$ ip route get $(ip route show 0.0.0.0/0 | grep -oP 'via KS+') | grep -oP 'src KS+'
192.168.0.20
add a comment |
If what you want is the IP address assigned to the default interface (which is what I understood from the comments under the question), using the Swiss army knife of network setup (ip
) should be enough:
$ ip route | grep '^default'
default via 10.176.143.1 dev eth1 metric 203
$ ip addr show eth1
4: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether c0:de:f1:72:30:48 brd ff:ff:ff:ff:ff:ff
inet 10.176.143.71/24 brd 10.176.143.255 scope global eth1
valid_lft forever preferred_lft forever
This shortens to
$ ip addr show
$( /sbin/ip route
| grep '^default'
| sed 's/^.*dev ([^ t]*) .*$/1/' )
which is ugly, because it is parsing something that probably wasn't really meant to be parsed (output of ip route
), but should work.
add a comment |
My favorite one is following.
Get the default interface:
$ ip r | grep -oP 'default .* K.+'
eth0
Get the ip of an interface:
$ ip a show eth0 | grep -oP 'inet K[d.]+'
10.33.44.135
Combined:
$ ip a show $(ip r | grep -oP 'default .* K.+') | grep -oP 'inet K[d.]+'
10.33.44.135
add a comment |
Simple Command with default interface.
ip route | grep src | awk '{print $NF; exit}'
Tested on All Unix OS
add a comment |
This worked for me on Centos 7. Find default interface using ip
ifconfig $(ip route | awk '/default/ { print $5 }') | grep "inet " | awk '{print $2}'
New contributor
add a comment |
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "106"
};
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: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
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%2funix.stackexchange.com%2fquestions%2f166999%2fhow-to-display-the-ip-address-of-the-default-interface-with-internet-connection%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
7 Answers
7
active
oldest
votes
7 Answers
7
active
oldest
votes
active
oldest
votes
active
oldest
votes
Here's another slightly terser method using procfs
(assumes you're using Linux):
default_iface=$(awk '$2 == 00000000 { print $1 }' /proc/net/route)
ip addr show dev "$default_iface" | awk '$1 ~ /^inet/ { sub("/.*", "", $2); print $2 }'
This returns both the IPv4 and (if available) the IPv6 address of the interface. You can change the test if you only want one or the other (look for inet
for IPv4, and inet6
for IPv6).
$ default_iface=$(awk '$2 == 00000000 { print $1 }' /proc/net/route)
$ ip addr show dev "$default_iface" | awk '$1 ~ /^inet/ { sub("/.*", "", $2); print $2 }'
10.0.2.15
fe80::a00:27ff:fe45:b085
$ ip addr show dev "$default_iface" | awk '$1 == "inet" { sub("/.*", "", $2); print $2 }'
10.0.2.15
$ ip addr show dev "$default_iface" | awk '$1 == "inet6" { sub("/.*", "", $2); print $2 }'
fe80::a00:27ff:fe45:b085
add a comment |
Here's another slightly terser method using procfs
(assumes you're using Linux):
default_iface=$(awk '$2 == 00000000 { print $1 }' /proc/net/route)
ip addr show dev "$default_iface" | awk '$1 ~ /^inet/ { sub("/.*", "", $2); print $2 }'
This returns both the IPv4 and (if available) the IPv6 address of the interface. You can change the test if you only want one or the other (look for inet
for IPv4, and inet6
for IPv6).
$ default_iface=$(awk '$2 == 00000000 { print $1 }' /proc/net/route)
$ ip addr show dev "$default_iface" | awk '$1 ~ /^inet/ { sub("/.*", "", $2); print $2 }'
10.0.2.15
fe80::a00:27ff:fe45:b085
$ ip addr show dev "$default_iface" | awk '$1 == "inet" { sub("/.*", "", $2); print $2 }'
10.0.2.15
$ ip addr show dev "$default_iface" | awk '$1 == "inet6" { sub("/.*", "", $2); print $2 }'
fe80::a00:27ff:fe45:b085
add a comment |
Here's another slightly terser method using procfs
(assumes you're using Linux):
default_iface=$(awk '$2 == 00000000 { print $1 }' /proc/net/route)
ip addr show dev "$default_iface" | awk '$1 ~ /^inet/ { sub("/.*", "", $2); print $2 }'
This returns both the IPv4 and (if available) the IPv6 address of the interface. You can change the test if you only want one or the other (look for inet
for IPv4, and inet6
for IPv6).
$ default_iface=$(awk '$2 == 00000000 { print $1 }' /proc/net/route)
$ ip addr show dev "$default_iface" | awk '$1 ~ /^inet/ { sub("/.*", "", $2); print $2 }'
10.0.2.15
fe80::a00:27ff:fe45:b085
$ ip addr show dev "$default_iface" | awk '$1 == "inet" { sub("/.*", "", $2); print $2 }'
10.0.2.15
$ ip addr show dev "$default_iface" | awk '$1 == "inet6" { sub("/.*", "", $2); print $2 }'
fe80::a00:27ff:fe45:b085
Here's another slightly terser method using procfs
(assumes you're using Linux):
default_iface=$(awk '$2 == 00000000 { print $1 }' /proc/net/route)
ip addr show dev "$default_iface" | awk '$1 ~ /^inet/ { sub("/.*", "", $2); print $2 }'
This returns both the IPv4 and (if available) the IPv6 address of the interface. You can change the test if you only want one or the other (look for inet
for IPv4, and inet6
for IPv6).
$ default_iface=$(awk '$2 == 00000000 { print $1 }' /proc/net/route)
$ ip addr show dev "$default_iface" | awk '$1 ~ /^inet/ { sub("/.*", "", $2); print $2 }'
10.0.2.15
fe80::a00:27ff:fe45:b085
$ ip addr show dev "$default_iface" | awk '$1 == "inet" { sub("/.*", "", $2); print $2 }'
10.0.2.15
$ ip addr show dev "$default_iface" | awk '$1 == "inet6" { sub("/.*", "", $2); print $2 }'
fe80::a00:27ff:fe45:b085
edited Nov 9 '14 at 18:56
answered Nov 9 '14 at 18:51
Chris DownChris Down
80k14189202
80k14189202
add a comment |
add a comment |
Here's what I wrote:
- Get the default interface from the "route" command.
It will print out which interface is the "default". For my host, I need to get the last column of the default line.
[root@pppdc9prd3ga mdesales]# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.4.0 * 255.255.252.0 U 0 0 0 bridge0
10.132.60.0 * 255.255.252.0 U 0 0 0 eth4
link-local * 255.255.0.0 U 1002 0 0 eth4
link-local * 255.255.0.0 U 1003 0 0 bridge0
default 10.132.60.1 0.0.0.0 UG 0 0 0 eth4
- Use "ifconfig" to retrieve the IP address of that interface.
Just getting the addr: value.
[root@pppdc9prd3ga mdesales]# ifconfig eth4
eth4 Link encap:Ethernet HWaddr 00:50:56:01:42:91
inet addr:10.132.63.191 Bcast:10.132.63.255 Mask:255.255.252.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1346288 errors:0 dropped:0 overruns:0 frame:0
TX packets:438844 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:276243478 (263.4 MiB) TX bytes:116188062 (110.8 MiB)
So here's the script I came up with.
/app/myPublicIp.sh
defaultInterface=$(route | grep default | awk '{print $(NF)}')
ifconfig $defaultInterface | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}'
Here's it executing:
/app/ipFor.sh
10.132.63.191
Hope it helps!
Nice, +1. You could simplify (well, shorten it anyway) that toifconfig $(route | grep -oP '^default.*s+K.*') | grep -oP 'inet addr:K[^s]+')
– terdon♦
Nov 9 '14 at 18:15
If you're going to do this on Linux, you might consider using procfs instead of parsing :-)
– Chris Down
Nov 9 '14 at 18:26
@ChrisDown... would that be via /proc/net? Yeah, this is for a Docker cluster.
– Marcello de Sales
Nov 9 '14 at 18:39
@MarcellodeSales Yeah,/proc/net/route
. I've posted an answer to that effect.
– Chris Down
Nov 9 '14 at 18:51
add a comment |
Here's what I wrote:
- Get the default interface from the "route" command.
It will print out which interface is the "default". For my host, I need to get the last column of the default line.
[root@pppdc9prd3ga mdesales]# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.4.0 * 255.255.252.0 U 0 0 0 bridge0
10.132.60.0 * 255.255.252.0 U 0 0 0 eth4
link-local * 255.255.0.0 U 1002 0 0 eth4
link-local * 255.255.0.0 U 1003 0 0 bridge0
default 10.132.60.1 0.0.0.0 UG 0 0 0 eth4
- Use "ifconfig" to retrieve the IP address of that interface.
Just getting the addr: value.
[root@pppdc9prd3ga mdesales]# ifconfig eth4
eth4 Link encap:Ethernet HWaddr 00:50:56:01:42:91
inet addr:10.132.63.191 Bcast:10.132.63.255 Mask:255.255.252.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1346288 errors:0 dropped:0 overruns:0 frame:0
TX packets:438844 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:276243478 (263.4 MiB) TX bytes:116188062 (110.8 MiB)
So here's the script I came up with.
/app/myPublicIp.sh
defaultInterface=$(route | grep default | awk '{print $(NF)}')
ifconfig $defaultInterface | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}'
Here's it executing:
/app/ipFor.sh
10.132.63.191
Hope it helps!
Nice, +1. You could simplify (well, shorten it anyway) that toifconfig $(route | grep -oP '^default.*s+K.*') | grep -oP 'inet addr:K[^s]+')
– terdon♦
Nov 9 '14 at 18:15
If you're going to do this on Linux, you might consider using procfs instead of parsing :-)
– Chris Down
Nov 9 '14 at 18:26
@ChrisDown... would that be via /proc/net? Yeah, this is for a Docker cluster.
– Marcello de Sales
Nov 9 '14 at 18:39
@MarcellodeSales Yeah,/proc/net/route
. I've posted an answer to that effect.
– Chris Down
Nov 9 '14 at 18:51
add a comment |
Here's what I wrote:
- Get the default interface from the "route" command.
It will print out which interface is the "default". For my host, I need to get the last column of the default line.
[root@pppdc9prd3ga mdesales]# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.4.0 * 255.255.252.0 U 0 0 0 bridge0
10.132.60.0 * 255.255.252.0 U 0 0 0 eth4
link-local * 255.255.0.0 U 1002 0 0 eth4
link-local * 255.255.0.0 U 1003 0 0 bridge0
default 10.132.60.1 0.0.0.0 UG 0 0 0 eth4
- Use "ifconfig" to retrieve the IP address of that interface.
Just getting the addr: value.
[root@pppdc9prd3ga mdesales]# ifconfig eth4
eth4 Link encap:Ethernet HWaddr 00:50:56:01:42:91
inet addr:10.132.63.191 Bcast:10.132.63.255 Mask:255.255.252.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1346288 errors:0 dropped:0 overruns:0 frame:0
TX packets:438844 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:276243478 (263.4 MiB) TX bytes:116188062 (110.8 MiB)
So here's the script I came up with.
/app/myPublicIp.sh
defaultInterface=$(route | grep default | awk '{print $(NF)}')
ifconfig $defaultInterface | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}'
Here's it executing:
/app/ipFor.sh
10.132.63.191
Hope it helps!
Here's what I wrote:
- Get the default interface from the "route" command.
It will print out which interface is the "default". For my host, I need to get the last column of the default line.
[root@pppdc9prd3ga mdesales]# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.4.0 * 255.255.252.0 U 0 0 0 bridge0
10.132.60.0 * 255.255.252.0 U 0 0 0 eth4
link-local * 255.255.0.0 U 1002 0 0 eth4
link-local * 255.255.0.0 U 1003 0 0 bridge0
default 10.132.60.1 0.0.0.0 UG 0 0 0 eth4
- Use "ifconfig" to retrieve the IP address of that interface.
Just getting the addr: value.
[root@pppdc9prd3ga mdesales]# ifconfig eth4
eth4 Link encap:Ethernet HWaddr 00:50:56:01:42:91
inet addr:10.132.63.191 Bcast:10.132.63.255 Mask:255.255.252.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1346288 errors:0 dropped:0 overruns:0 frame:0
TX packets:438844 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:276243478 (263.4 MiB) TX bytes:116188062 (110.8 MiB)
So here's the script I came up with.
/app/myPublicIp.sh
defaultInterface=$(route | grep default | awk '{print $(NF)}')
ifconfig $defaultInterface | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}'
Here's it executing:
/app/ipFor.sh
10.132.63.191
Hope it helps!
answered Nov 9 '14 at 18:09
Marcello de SalesMarcello de Sales
14816
14816
Nice, +1. You could simplify (well, shorten it anyway) that toifconfig $(route | grep -oP '^default.*s+K.*') | grep -oP 'inet addr:K[^s]+')
– terdon♦
Nov 9 '14 at 18:15
If you're going to do this on Linux, you might consider using procfs instead of parsing :-)
– Chris Down
Nov 9 '14 at 18:26
@ChrisDown... would that be via /proc/net? Yeah, this is for a Docker cluster.
– Marcello de Sales
Nov 9 '14 at 18:39
@MarcellodeSales Yeah,/proc/net/route
. I've posted an answer to that effect.
– Chris Down
Nov 9 '14 at 18:51
add a comment |
Nice, +1. You could simplify (well, shorten it anyway) that toifconfig $(route | grep -oP '^default.*s+K.*') | grep -oP 'inet addr:K[^s]+')
– terdon♦
Nov 9 '14 at 18:15
If you're going to do this on Linux, you might consider using procfs instead of parsing :-)
– Chris Down
Nov 9 '14 at 18:26
@ChrisDown... would that be via /proc/net? Yeah, this is for a Docker cluster.
– Marcello de Sales
Nov 9 '14 at 18:39
@MarcellodeSales Yeah,/proc/net/route
. I've posted an answer to that effect.
– Chris Down
Nov 9 '14 at 18:51
Nice, +1. You could simplify (well, shorten it anyway) that to
ifconfig $(route | grep -oP '^default.*s+K.*') | grep -oP 'inet addr:K[^s]+')
– terdon♦
Nov 9 '14 at 18:15
Nice, +1. You could simplify (well, shorten it anyway) that to
ifconfig $(route | grep -oP '^default.*s+K.*') | grep -oP 'inet addr:K[^s]+')
– terdon♦
Nov 9 '14 at 18:15
If you're going to do this on Linux, you might consider using procfs instead of parsing :-)
– Chris Down
Nov 9 '14 at 18:26
If you're going to do this on Linux, you might consider using procfs instead of parsing :-)
– Chris Down
Nov 9 '14 at 18:26
@ChrisDown... would that be via /proc/net? Yeah, this is for a Docker cluster.
– Marcello de Sales
Nov 9 '14 at 18:39
@ChrisDown... would that be via /proc/net? Yeah, this is for a Docker cluster.
– Marcello de Sales
Nov 9 '14 at 18:39
@MarcellodeSales Yeah,
/proc/net/route
. I've posted an answer to that effect.– Chris Down
Nov 9 '14 at 18:51
@MarcellodeSales Yeah,
/proc/net/route
. I've posted an answer to that effect.– Chris Down
Nov 9 '14 at 18:51
add a comment |
Lots of good answers here, but wanted to throw in my usual approach:
The simplest solution is to get the route for a public internet address:
$ ip route get 1.1.1.1 | grep -oP 'src KS+'
192.168.0.20
Another solution is to get the default gateway, and then get the IP addr used to communicate with that gateway:
$ ip route get $(ip route show 0.0.0.0/0 | grep -oP 'via KS+') | grep -oP 'src KS+'
192.168.0.20
add a comment |
Lots of good answers here, but wanted to throw in my usual approach:
The simplest solution is to get the route for a public internet address:
$ ip route get 1.1.1.1 | grep -oP 'src KS+'
192.168.0.20
Another solution is to get the default gateway, and then get the IP addr used to communicate with that gateway:
$ ip route get $(ip route show 0.0.0.0/0 | grep -oP 'via KS+') | grep -oP 'src KS+'
192.168.0.20
add a comment |
Lots of good answers here, but wanted to throw in my usual approach:
The simplest solution is to get the route for a public internet address:
$ ip route get 1.1.1.1 | grep -oP 'src KS+'
192.168.0.20
Another solution is to get the default gateway, and then get the IP addr used to communicate with that gateway:
$ ip route get $(ip route show 0.0.0.0/0 | grep -oP 'via KS+') | grep -oP 'src KS+'
192.168.0.20
Lots of good answers here, but wanted to throw in my usual approach:
The simplest solution is to get the route for a public internet address:
$ ip route get 1.1.1.1 | grep -oP 'src KS+'
192.168.0.20
Another solution is to get the default gateway, and then get the IP addr used to communicate with that gateway:
$ ip route get $(ip route show 0.0.0.0/0 | grep -oP 'via KS+') | grep -oP 'src KS+'
192.168.0.20
answered Nov 10 '14 at 0:02
PatrickPatrick
50.3k11128180
50.3k11128180
add a comment |
add a comment |
If what you want is the IP address assigned to the default interface (which is what I understood from the comments under the question), using the Swiss army knife of network setup (ip
) should be enough:
$ ip route | grep '^default'
default via 10.176.143.1 dev eth1 metric 203
$ ip addr show eth1
4: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether c0:de:f1:72:30:48 brd ff:ff:ff:ff:ff:ff
inet 10.176.143.71/24 brd 10.176.143.255 scope global eth1
valid_lft forever preferred_lft forever
This shortens to
$ ip addr show
$( /sbin/ip route
| grep '^default'
| sed 's/^.*dev ([^ t]*) .*$/1/' )
which is ugly, because it is parsing something that probably wasn't really meant to be parsed (output of ip route
), but should work.
add a comment |
If what you want is the IP address assigned to the default interface (which is what I understood from the comments under the question), using the Swiss army knife of network setup (ip
) should be enough:
$ ip route | grep '^default'
default via 10.176.143.1 dev eth1 metric 203
$ ip addr show eth1
4: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether c0:de:f1:72:30:48 brd ff:ff:ff:ff:ff:ff
inet 10.176.143.71/24 brd 10.176.143.255 scope global eth1
valid_lft forever preferred_lft forever
This shortens to
$ ip addr show
$( /sbin/ip route
| grep '^default'
| sed 's/^.*dev ([^ t]*) .*$/1/' )
which is ugly, because it is parsing something that probably wasn't really meant to be parsed (output of ip route
), but should work.
add a comment |
If what you want is the IP address assigned to the default interface (which is what I understood from the comments under the question), using the Swiss army knife of network setup (ip
) should be enough:
$ ip route | grep '^default'
default via 10.176.143.1 dev eth1 metric 203
$ ip addr show eth1
4: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether c0:de:f1:72:30:48 brd ff:ff:ff:ff:ff:ff
inet 10.176.143.71/24 brd 10.176.143.255 scope global eth1
valid_lft forever preferred_lft forever
This shortens to
$ ip addr show
$( /sbin/ip route
| grep '^default'
| sed 's/^.*dev ([^ t]*) .*$/1/' )
which is ugly, because it is parsing something that probably wasn't really meant to be parsed (output of ip route
), but should work.
If what you want is the IP address assigned to the default interface (which is what I understood from the comments under the question), using the Swiss army knife of network setup (ip
) should be enough:
$ ip route | grep '^default'
default via 10.176.143.1 dev eth1 metric 203
$ ip addr show eth1
4: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether c0:de:f1:72:30:48 brd ff:ff:ff:ff:ff:ff
inet 10.176.143.71/24 brd 10.176.143.255 scope global eth1
valid_lft forever preferred_lft forever
This shortens to
$ ip addr show
$( /sbin/ip route
| grep '^default'
| sed 's/^.*dev ([^ t]*) .*$/1/' )
which is ugly, because it is parsing something that probably wasn't really meant to be parsed (output of ip route
), but should work.
answered Nov 9 '14 at 21:59
peterphpeterph
23.5k24457
23.5k24457
add a comment |
add a comment |
My favorite one is following.
Get the default interface:
$ ip r | grep -oP 'default .* K.+'
eth0
Get the ip of an interface:
$ ip a show eth0 | grep -oP 'inet K[d.]+'
10.33.44.135
Combined:
$ ip a show $(ip r | grep -oP 'default .* K.+') | grep -oP 'inet K[d.]+'
10.33.44.135
add a comment |
My favorite one is following.
Get the default interface:
$ ip r | grep -oP 'default .* K.+'
eth0
Get the ip of an interface:
$ ip a show eth0 | grep -oP 'inet K[d.]+'
10.33.44.135
Combined:
$ ip a show $(ip r | grep -oP 'default .* K.+') | grep -oP 'inet K[d.]+'
10.33.44.135
add a comment |
My favorite one is following.
Get the default interface:
$ ip r | grep -oP 'default .* K.+'
eth0
Get the ip of an interface:
$ ip a show eth0 | grep -oP 'inet K[d.]+'
10.33.44.135
Combined:
$ ip a show $(ip r | grep -oP 'default .* K.+') | grep -oP 'inet K[d.]+'
10.33.44.135
My favorite one is following.
Get the default interface:
$ ip r | grep -oP 'default .* K.+'
eth0
Get the ip of an interface:
$ ip a show eth0 | grep -oP 'inet K[d.]+'
10.33.44.135
Combined:
$ ip a show $(ip r | grep -oP 'default .* K.+') | grep -oP 'inet K[d.]+'
10.33.44.135
answered Aug 12 '18 at 17:11
AshaldAshald
1
1
add a comment |
add a comment |
Simple Command with default interface.
ip route | grep src | awk '{print $NF; exit}'
Tested on All Unix OS
add a comment |
Simple Command with default interface.
ip route | grep src | awk '{print $NF; exit}'
Tested on All Unix OS
add a comment |
Simple Command with default interface.
ip route | grep src | awk '{print $NF; exit}'
Tested on All Unix OS
Simple Command with default interface.
ip route | grep src | awk '{print $NF; exit}'
Tested on All Unix OS
edited Dec 12 '18 at 20:51
answered Dec 2 '18 at 19:29
M.S.ArunM.S.Arun
1397
1397
add a comment |
add a comment |
This worked for me on Centos 7. Find default interface using ip
ifconfig $(ip route | awk '/default/ { print $5 }') | grep "inet " | awk '{print $2}'
New contributor
add a comment |
This worked for me on Centos 7. Find default interface using ip
ifconfig $(ip route | awk '/default/ { print $5 }') | grep "inet " | awk '{print $2}'
New contributor
add a comment |
This worked for me on Centos 7. Find default interface using ip
ifconfig $(ip route | awk '/default/ { print $5 }') | grep "inet " | awk '{print $2}'
New contributor
This worked for me on Centos 7. Find default interface using ip
ifconfig $(ip route | awk '/default/ { print $5 }') | grep "inet " | awk '{print $2}'
New contributor
New contributor
answered 15 mins ago
N AN A
1012
1012
New contributor
New contributor
add a comment |
add a comment |
Thanks for contributing an answer to Unix & Linux Stack Exchange!
- 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%2funix.stackexchange.com%2fquestions%2f166999%2fhow-to-display-the-ip-address-of-the-default-interface-with-internet-connection%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
Do you mean the one used for sending to the default gateway?
– Hauke Laging
Nov 9 '14 at 18:02
possible duplicate of How can I get my external IP address in bash?
– jasonwryan
Nov 9 '14 at 18:03
1
@jasonwryan not a dupe (or not a dupe of that one anyway), the OP wants the internal IP, not the external.
– terdon♦
Nov 9 '14 at 18:11
Hauke, this might be it, if the interpretation of the "default" value from the route command is that that is.
– Marcello de Sales
Nov 9 '14 at 18:11
1
@MarcellodeSales no, it has no dependencies. It is just looking for something different. You are showing how to get the IP of a machine in the internal network while the dupe is about getting the external IP. Two very different things. Jason was confused because your original question was asking for a "public" IP which is not what your answer returns.
– terdon♦
Nov 9 '14 at 18:17