Мне нужно проверить скриптом, eth0
настроен ли . Если это так, скрипт ничего не сделает. В противном случае это начнется wlan0
. (Я не хочу и то eth0
и другое wlan0
одновременно).
Какой был бы самый простой способ проверить, eth0
уже есть ли ?
Я использую Debian Wheezy
ПОЯСНЕНИЯ:
Я хотел бы проверить не только то, что кабель eth0
подключен, но и то, что интерфейс настроен (т. Е. У него либо установлен статический IP-адрес, либо он получил IP-адрес DHCP). Если кабель подключен, но eth0
не настроен правильно, я хочу запуститьwlan0
linux
networking
user1968963
источник
источник
cat /sys/class/net/ | grep eth0
должен дать вам легко анализируемые данные. Вы также можете сделатьsudo ethtool eth0 | grep Link
Ответы:
Вы можете сделать это многими способами. Вот пример:
источник
/sys/class/net/eth0/carrier
проверить кошку на наличие сигнала, но он все еще может не иметь аренды DHCP и т. Д.Если ничего не отображается, значит, ваш интерфейс не работает
источник
Так что здесь мы
grep
вездесущийip
инструментstdout
для строки, которая содержит и наш интересующий интерфейс, и фразу «состояние ВВЕРХ» (спасибо @Lekensteyn за указание на необходимость немного большей специфичности, чем простоUP
). Мы используем аргументa
в качестве краткой формы дляaddress
и этого должно быть достаточно, чтобы получить список всех настроенных сетевых карт в системе.Одним из преимуществ использования
ip
может быть то, что он действительно должен быть доступен везде - например, я обычно настраиваю сетевые устройства моего телефона Android.:colons
Используется , чтобы избежать частичных совпадений - таким образом , мы гарантируем соответствие для ,eth0
в отличие от в противном случае возможноsomeothereth0
илиeth007
.Спасибо @RaphaelAhrens за то, что подтолкнули меня к правильности и объяснили мое решение.
РЕДАКТИРОВАТЬ:
Для обработки текущих требований вы можете:
Вышеуказанный IP-адрес CIDR будет распечатан только в том случае, если ваша цель
$if
- UP, подключена и имеет такой адрес . Для ipv6 решение такое же простое с незначительными изменениями.Если вам не нравится,
sed
вы могли бы достичь аналогичных результатов с другим|pipe ... grep
и добавив-A
контекстную опцию к первомуgrep
- но мне нравитсяsed
.источник
UP
если устройство, но кабель не подключается:2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
. Кроме того, можно указать устройство , чтобы избежать ложных срабатываний:ip addr show dev eth0
.Другие методы не работают, но этот работает (по крайней мере, в Ubuntu):
источник
ip route
Debian Stretch нет «ссылки», с которой нужно работать .