The 'proper' way to get ONLY my eth0 netmask via CLI in Ubuntu 18.04 on VPS?
up vote
1
down vote
favorite
According to this answer and many other tutorials throughout the web, ifconfig
will list lots of fascinating and useful information. And, that seems the standard way to find out stuff like my netmask.
But, for scripting, I need only the netmask itself for eth0
; and man ifconfig
was unhelpful with this question.
I am using a VPS, so I don't have control of my netmask; I need to find out what it has been set to.
(Note: While I need eth0
, some machines might have another, say eth1
or ens3
, which would also be useful.)
- I do not need the entire line the netmask is in:
inet 111.222.333.444 netmask 255.255.255.0 broadcast 111.222.555.666
- I want to avoid a "hackdoor" method, like getting
netmask 255.255.255.0
then runningsed "s/netmask //"
because stuff can change—unless an expert says so
command-line networking server vps ifconfig
add a comment |
up vote
1
down vote
favorite
According to this answer and many other tutorials throughout the web, ifconfig
will list lots of fascinating and useful information. And, that seems the standard way to find out stuff like my netmask.
But, for scripting, I need only the netmask itself for eth0
; and man ifconfig
was unhelpful with this question.
I am using a VPS, so I don't have control of my netmask; I need to find out what it has been set to.
(Note: While I need eth0
, some machines might have another, say eth1
or ens3
, which would also be useful.)
- I do not need the entire line the netmask is in:
inet 111.222.333.444 netmask 255.255.255.0 broadcast 111.222.555.666
- I want to avoid a "hackdoor" method, like getting
netmask 255.255.255.0
then runningsed "s/netmask //"
because stuff can change—unless an expert says so
command-line networking server vps ifconfig
add a comment |
up vote
1
down vote
favorite
up vote
1
down vote
favorite
According to this answer and many other tutorials throughout the web, ifconfig
will list lots of fascinating and useful information. And, that seems the standard way to find out stuff like my netmask.
But, for scripting, I need only the netmask itself for eth0
; and man ifconfig
was unhelpful with this question.
I am using a VPS, so I don't have control of my netmask; I need to find out what it has been set to.
(Note: While I need eth0
, some machines might have another, say eth1
or ens3
, which would also be useful.)
- I do not need the entire line the netmask is in:
inet 111.222.333.444 netmask 255.255.255.0 broadcast 111.222.555.666
- I want to avoid a "hackdoor" method, like getting
netmask 255.255.255.0
then runningsed "s/netmask //"
because stuff can change—unless an expert says so
command-line networking server vps ifconfig
According to this answer and many other tutorials throughout the web, ifconfig
will list lots of fascinating and useful information. And, that seems the standard way to find out stuff like my netmask.
But, for scripting, I need only the netmask itself for eth0
; and man ifconfig
was unhelpful with this question.
I am using a VPS, so I don't have control of my netmask; I need to find out what it has been set to.
(Note: While I need eth0
, some machines might have another, say eth1
or ens3
, which would also be useful.)
- I do not need the entire line the netmask is in:
inet 111.222.333.444 netmask 255.255.255.0 broadcast 111.222.555.666
- I want to avoid a "hackdoor" method, like getting
netmask 255.255.255.0
then runningsed "s/netmask //"
because stuff can change—unless an expert says so
command-line networking server vps ifconfig
command-line networking server vps ifconfig
edited Dec 2 at 14:32
asked Dec 2 at 5:34
Jesse Steele
11016
11016
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
up vote
1
down vote
accepted
Probably this is what you need (note this will not work on Ubuntu 16.04):
#!/bin/bash
IFACE='eth0'
ifconfig | grep -A 7 "$IFACE" | sed -nr 's/^.*netmasks([0-9.]+)ssbroadcast.*$/1/p'
In the first line the name of the network interface is assigned as value of the variable $IFACE
- this is useful for scripting, otherwise you can use grep -A 7 'eth0'
.
On the second line the output of the command ifconfig
will be piped to the grep
command, where the option -A 7
will output the following 7 lines after the line with the matched string/regexp. The output of that command will be piped to sed
.
Within the sed
command:
the regular expression
^.*netmasks(.*)ssbroadcast.*$
will match to the whole line, from the beginning^
to the end$
, that contains some characters.*
and the "keywords"netmaskspace
,[0-9.]+
andssbroadcast
in that exact order;that line will be substituted (
s/old/new/
) with the content of the first capture group [(.*)
->1
], where the regexp[0-9.]+
will match to the strings that are consisted of digits end dots;the option
-r
(or-E
) will enable the extended regular expressions, which, in this case, will allow us to use the round brackets freely;the option
-n
with combination of the flagp
with output only the matched line and will preserve the rest output ofsed
.
Here is an extended example that will parse the names of all network interfaces and will do similar as the above command for each of them:
for IFACE in $(ifconfig | sed -nr 's/(^[a-z0-9]+):.*/1/p'); do
echo -en "${IFACE}:t"; ifconfig |
grep -A 7 "$IFACE" |
sed 's/ broadcast.*$//' |
sed -rn 's/^.*netmask (.*)$/1/p';
done
Sample output of the above command executed on a virtual machine with Ubuntu 18.04:
$ for IFACE in $(ifconfig | sed -nr 's/(^[a-z0-9]+):.*/1/p'); do echo -en "${IFACE}:t"; ifconfig | grep -A 7 "$IFACE" | sed 's/..broadcast.*$//' | sed -rn 's/^.*netmask (.*)$/1/p'; done
ens33: 255.255.255.0
lo: 255.0.0.0
1
Yep, that's it! You Rock!
– Jesse Steele
Dec 2 at 14:31
add a comment |
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "89"
};
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',
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%2faskubuntu.com%2fquestions%2f1097834%2fthe-proper-way-to-get-only-my-eth0-netmask-via-cli-in-ubuntu-18-04-on-vps%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
up vote
1
down vote
accepted
Probably this is what you need (note this will not work on Ubuntu 16.04):
#!/bin/bash
IFACE='eth0'
ifconfig | grep -A 7 "$IFACE" | sed -nr 's/^.*netmasks([0-9.]+)ssbroadcast.*$/1/p'
In the first line the name of the network interface is assigned as value of the variable $IFACE
- this is useful for scripting, otherwise you can use grep -A 7 'eth0'
.
On the second line the output of the command ifconfig
will be piped to the grep
command, where the option -A 7
will output the following 7 lines after the line with the matched string/regexp. The output of that command will be piped to sed
.
Within the sed
command:
the regular expression
^.*netmasks(.*)ssbroadcast.*$
will match to the whole line, from the beginning^
to the end$
, that contains some characters.*
and the "keywords"netmaskspace
,[0-9.]+
andssbroadcast
in that exact order;that line will be substituted (
s/old/new/
) with the content of the first capture group [(.*)
->1
], where the regexp[0-9.]+
will match to the strings that are consisted of digits end dots;the option
-r
(or-E
) will enable the extended regular expressions, which, in this case, will allow us to use the round brackets freely;the option
-n
with combination of the flagp
with output only the matched line and will preserve the rest output ofsed
.
Here is an extended example that will parse the names of all network interfaces and will do similar as the above command for each of them:
for IFACE in $(ifconfig | sed -nr 's/(^[a-z0-9]+):.*/1/p'); do
echo -en "${IFACE}:t"; ifconfig |
grep -A 7 "$IFACE" |
sed 's/ broadcast.*$//' |
sed -rn 's/^.*netmask (.*)$/1/p';
done
Sample output of the above command executed on a virtual machine with Ubuntu 18.04:
$ for IFACE in $(ifconfig | sed -nr 's/(^[a-z0-9]+):.*/1/p'); do echo -en "${IFACE}:t"; ifconfig | grep -A 7 "$IFACE" | sed 's/..broadcast.*$//' | sed -rn 's/^.*netmask (.*)$/1/p'; done
ens33: 255.255.255.0
lo: 255.0.0.0
1
Yep, that's it! You Rock!
– Jesse Steele
Dec 2 at 14:31
add a comment |
up vote
1
down vote
accepted
Probably this is what you need (note this will not work on Ubuntu 16.04):
#!/bin/bash
IFACE='eth0'
ifconfig | grep -A 7 "$IFACE" | sed -nr 's/^.*netmasks([0-9.]+)ssbroadcast.*$/1/p'
In the first line the name of the network interface is assigned as value of the variable $IFACE
- this is useful for scripting, otherwise you can use grep -A 7 'eth0'
.
On the second line the output of the command ifconfig
will be piped to the grep
command, where the option -A 7
will output the following 7 lines after the line with the matched string/regexp. The output of that command will be piped to sed
.
Within the sed
command:
the regular expression
^.*netmasks(.*)ssbroadcast.*$
will match to the whole line, from the beginning^
to the end$
, that contains some characters.*
and the "keywords"netmaskspace
,[0-9.]+
andssbroadcast
in that exact order;that line will be substituted (
s/old/new/
) with the content of the first capture group [(.*)
->1
], where the regexp[0-9.]+
will match to the strings that are consisted of digits end dots;the option
-r
(or-E
) will enable the extended regular expressions, which, in this case, will allow us to use the round brackets freely;the option
-n
with combination of the flagp
with output only the matched line and will preserve the rest output ofsed
.
Here is an extended example that will parse the names of all network interfaces and will do similar as the above command for each of them:
for IFACE in $(ifconfig | sed -nr 's/(^[a-z0-9]+):.*/1/p'); do
echo -en "${IFACE}:t"; ifconfig |
grep -A 7 "$IFACE" |
sed 's/ broadcast.*$//' |
sed -rn 's/^.*netmask (.*)$/1/p';
done
Sample output of the above command executed on a virtual machine with Ubuntu 18.04:
$ for IFACE in $(ifconfig | sed -nr 's/(^[a-z0-9]+):.*/1/p'); do echo -en "${IFACE}:t"; ifconfig | grep -A 7 "$IFACE" | sed 's/..broadcast.*$//' | sed -rn 's/^.*netmask (.*)$/1/p'; done
ens33: 255.255.255.0
lo: 255.0.0.0
1
Yep, that's it! You Rock!
– Jesse Steele
Dec 2 at 14:31
add a comment |
up vote
1
down vote
accepted
up vote
1
down vote
accepted
Probably this is what you need (note this will not work on Ubuntu 16.04):
#!/bin/bash
IFACE='eth0'
ifconfig | grep -A 7 "$IFACE" | sed -nr 's/^.*netmasks([0-9.]+)ssbroadcast.*$/1/p'
In the first line the name of the network interface is assigned as value of the variable $IFACE
- this is useful for scripting, otherwise you can use grep -A 7 'eth0'
.
On the second line the output of the command ifconfig
will be piped to the grep
command, where the option -A 7
will output the following 7 lines after the line with the matched string/regexp. The output of that command will be piped to sed
.
Within the sed
command:
the regular expression
^.*netmasks(.*)ssbroadcast.*$
will match to the whole line, from the beginning^
to the end$
, that contains some characters.*
and the "keywords"netmaskspace
,[0-9.]+
andssbroadcast
in that exact order;that line will be substituted (
s/old/new/
) with the content of the first capture group [(.*)
->1
], where the regexp[0-9.]+
will match to the strings that are consisted of digits end dots;the option
-r
(or-E
) will enable the extended regular expressions, which, in this case, will allow us to use the round brackets freely;the option
-n
with combination of the flagp
with output only the matched line and will preserve the rest output ofsed
.
Here is an extended example that will parse the names of all network interfaces and will do similar as the above command for each of them:
for IFACE in $(ifconfig | sed -nr 's/(^[a-z0-9]+):.*/1/p'); do
echo -en "${IFACE}:t"; ifconfig |
grep -A 7 "$IFACE" |
sed 's/ broadcast.*$//' |
sed -rn 's/^.*netmask (.*)$/1/p';
done
Sample output of the above command executed on a virtual machine with Ubuntu 18.04:
$ for IFACE in $(ifconfig | sed -nr 's/(^[a-z0-9]+):.*/1/p'); do echo -en "${IFACE}:t"; ifconfig | grep -A 7 "$IFACE" | sed 's/..broadcast.*$//' | sed -rn 's/^.*netmask (.*)$/1/p'; done
ens33: 255.255.255.0
lo: 255.0.0.0
Probably this is what you need (note this will not work on Ubuntu 16.04):
#!/bin/bash
IFACE='eth0'
ifconfig | grep -A 7 "$IFACE" | sed -nr 's/^.*netmasks([0-9.]+)ssbroadcast.*$/1/p'
In the first line the name of the network interface is assigned as value of the variable $IFACE
- this is useful for scripting, otherwise you can use grep -A 7 'eth0'
.
On the second line the output of the command ifconfig
will be piped to the grep
command, where the option -A 7
will output the following 7 lines after the line with the matched string/regexp. The output of that command will be piped to sed
.
Within the sed
command:
the regular expression
^.*netmasks(.*)ssbroadcast.*$
will match to the whole line, from the beginning^
to the end$
, that contains some characters.*
and the "keywords"netmaskspace
,[0-9.]+
andssbroadcast
in that exact order;that line will be substituted (
s/old/new/
) with the content of the first capture group [(.*)
->1
], where the regexp[0-9.]+
will match to the strings that are consisted of digits end dots;the option
-r
(or-E
) will enable the extended regular expressions, which, in this case, will allow us to use the round brackets freely;the option
-n
with combination of the flagp
with output only the matched line and will preserve the rest output ofsed
.
Here is an extended example that will parse the names of all network interfaces and will do similar as the above command for each of them:
for IFACE in $(ifconfig | sed -nr 's/(^[a-z0-9]+):.*/1/p'); do
echo -en "${IFACE}:t"; ifconfig |
grep -A 7 "$IFACE" |
sed 's/ broadcast.*$//' |
sed -rn 's/^.*netmask (.*)$/1/p';
done
Sample output of the above command executed on a virtual machine with Ubuntu 18.04:
$ for IFACE in $(ifconfig | sed -nr 's/(^[a-z0-9]+):.*/1/p'); do echo -en "${IFACE}:t"; ifconfig | grep -A 7 "$IFACE" | sed 's/..broadcast.*$//' | sed -rn 's/^.*netmask (.*)$/1/p'; done
ens33: 255.255.255.0
lo: 255.0.0.0
edited Dec 2 at 14:56
answered Dec 2 at 13:14
pa4080
13.2k52561
13.2k52561
1
Yep, that's it! You Rock!
– Jesse Steele
Dec 2 at 14:31
add a comment |
1
Yep, that's it! You Rock!
– Jesse Steele
Dec 2 at 14:31
1
1
Yep, that's it! You Rock!
– Jesse Steele
Dec 2 at 14:31
Yep, that's it! You Rock!
– Jesse Steele
Dec 2 at 14:31
add a comment |
Thanks for contributing an answer to Ask Ubuntu!
- 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.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- 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%2faskubuntu.com%2fquestions%2f1097834%2fthe-proper-way-to-get-only-my-eth0-netmask-via-cli-in-ubuntu-18-04-on-vps%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