2015-10-15 4 views
2

Я использую Баш, чтобы получить IP-адрес моей машины с этим сценарием:Получить маску подсети в Linux с помощью Баша

_MyGW="$(ip route get 8.8.8.8 | awk 'N=3 {print $N}')" 

И теперь я пытаюсь получить маску подсети в этом типе:

192.168.1.0/24 

Но я не знаю, как я могу это сделать.

+0

'8.8.8.8 через 192.168.1.1 DEV eth0 ЦСИ 192.168.1.5' (ИПС не является реальной - только для примера) – ValeriRangelov

+0

Так'/24' не находится в вашем выводе команды 'ip', но вы хотите получить ее в конечном выпуске? – anubhava

+0

Да, но не обязательно быть с командой 'ip'. – ValeriRangelov

ответ

9

Есть несколько способов для достижения этой цели:

первый: напечатать маску в формате 255.255.255.0, вы можете использовать это:

/sbin/ifconfig wlan0 | awk '/Mask:/{ print $4;} ' 

второй: мы можем использовать IP-команду, чтобы получить маска в формате 192.168.1.1/24

ip -o -f inet addr show | awk '/scope global/ {print $4}' 
+0

Vishal, который работает. Спасибо. Но у меня есть вопросы. Я изменил 'wlan0' с' eth0' в моем случае, но когда я начинаю первую строку вашего ответа, у меня нет ввода. Что на самом деле должно это делать? – ValeriRangelov

+0

сначала убедитесь, что у вас есть соединение eth0 с помощью команды ifconfig, если у вас есть, тогда он должен печатать, он работал в моем случае. :) – vishal

+0

Да, у меня есть соединение. Но я понимаю, что делать. На самом деле у меня нет необходимости в этом выходе. – ValeriRangelov

0

лучший подход будет:

ifconfig eth0 | awk '/Mask:/{split($4,a,":"); print a[2]}' 

Вы можете заменить eth0 с любым другим интерфейсом вы хотите

Смежные вопросы