Проверьте, является ли IP статическим или динамическим программным

Чтобы выполнить ответ A.B. и для записи:

Параметры монтирования могут быть указаны внутри правил udev ... при определенных условиях. Когда я запускал тесты, я заметил, что некоторые опции:

приняты и соблюдены: ro, rw, nodev, noexec приняты и проигнорированы: comment=x-gvfs-show, не приняты, в этом они нарушают правило udev: mode=0XYZ, x-gvfs-show

В последнем случае нарушение правила udev означает udisk автоматически монтирует среду с параметрами по умолчанию.

] Тег udev MODE="0550", вы могли бы подумать, что он эквивалентен вызову опций Mount (ro) mount, игнорируется. Обратите внимание, что указание ro или rw не отображается в Nautilus, как вы ожидали. Странные разрешения, отображаемые Nautilus, остаются неизменными, тогда как попытка записи, если установлено ro, приведет к предупреждению и отказу в разрешении на запись. Bug?

И последнее, но не менее важное: может упорядочить запись /etc/fstab в то же время, когда вы укажете правило монтирования udev для данного устройства. Это приведет к конфликту и сообщению об ошибке, поскольку udisk будет конкурировать с вашим udev правилом для установки устройства. В этом нет ничего удивительного. Устройство все равно будет смонтировано (в моем случае, по правилу udev - пожалуйста, не спрашивайте, почему ...) и даже можно получить доступ.

HTH немного.

5
задан 10 June 2011 в 01:11

35 ответов

Его гораздо проще определить, что:

Просто отключите машину от сети. Если вы видите ip-адрес в выводе ifconfig для этого интерфейса, тогда он динамически присваивается динамически.

рассматривает delaflota

-1
ответ дан 25 July 2018 в 21:45

Другой способ - использовать инструменты NetworkManager, а именно nm-tool и nmcli.

Я написал следующий сценарий:

#!/bin/sh # get the connection id of the active connection get_con_id() { nm-tool | awk ' $1 == "-" { dev = $3 id = dev if (NF > 4 && match($0, "\\[(.*)\\]", a)) id = a[1] } /^ / && $1 == "State:" && $2 == "connected" { print id }' } # get the address type of the active connection nmcli con list id "$(get_con_id)" | awk ' $1 == "ipv4.method:" { if ($2 == "manual") print "static" else if ($2 == "auto") print "dynamic" else print "unknown" }'

Вероятно, обычные случаи, например где у вас более одного активного соединения, но может быть отправной точкой для разработки.

Кроме того, если вы измените соединение, сценарий увидит новые настройки, даже если соединение не было перезапущены, поэтому они еще не используются.

0
ответ дан 25 July 2018 в 21:45

Вы можете поместить скрипты в /etc/network/if-up.d, которые будут выполняться при активации интерфейса (либо ifup, либо Network Manager). Эти скрипты получают информацию об интерфейсе, включая переменную среды $METHOD, установленную на static или dhcp. Это описано на странице man interfaces(5).

#!/bin/sh ## This is /etc/network/if-up.d/zzzz_alex_notify_myserver case $LOGICAL in eth0) case $METHOD in dhcp) <notify server that it's on DHCP>;; static) <notify server that it's on a static IP configuration>;; esac;; esac
3
ответ дан 25 July 2018 в 21:45

Я написал эту команду, чтобы получить настроенные интерфейсы DHCP в сценарии оболочки:

ps -A -o cmd | grep -E '(/| )dhclient .'

Затем вы можете отменить интерфейсы, которые не управляются с помощью dhclient.

At в тот момент, когда я не знаю, работает ли это для всех дистрибутивов GNU / Linux.

0
ответ дан 25 July 2018 в 21:45

Я предполагаю, что вы ссылаетесь на назначение IP вашего компьютера ubuntu локально, а не на свой внешний / публичный IP.

Возможно, следующий результат может помочь:

cat /etc/network/interfaces |grep ^iface\ eth0 | awk -F ' ' '{print $4}'

Это напечатает либо слово static, либо dhcp, в зависимости от текущей конфигурации интерфейса eth0.

Вы также можете внести небольшие корректировки, например:

cat /etc/network/interfaces |grep ^iface\ | awk -F ' ' '{print $2, $4}'

, чтобы перечислить все интерфейсы и их конфигурацию.

-1
ответ дан 25 July 2018 в 21:45
  • 1
    Это не работает с NetworkManager, по умолчанию в Ubuntu. – enzotib 6 August 2011 в 23:37
  • 2
    Что вы подразумеваете под «не работая с NetworkManager»? Он не обновляется в соответствии с запущенной конфигурацией? Выход, конечно, работает нормально ... – Pavlos G. 7 August 2011 в 02:31
  • 3
    При использовании NetworkManager /etc/network/interfaces не содержат никакой информации об eth0 или wlan0 или аналогичных – enzotib 7 August 2011 в 02:33

Его гораздо проще определить, что:

Просто отключите машину от сети. Если вы видите ip-адрес в выводе ifconfig для этого интерфейса, тогда он динамически присваивается динамически.

рассматривает delaflota

-1
ответ дан 2 August 2018 в 03:21

Другой способ - использовать инструменты NetworkManager, а именно nm-tool и nmcli.

Я написал следующий сценарий:

#!/bin/sh # get the connection id of the active connection get_con_id() { nm-tool | awk ' $1 == "-" { dev = $3 id = dev if (NF > 4 && match($0, "\\[(.*)\\]", a)) id = a[1] } /^ / && $1 == "State:" && $2 == "connected" { print id }' } # get the address type of the active connection nmcli con list id "$(get_con_id)" | awk ' $1 == "ipv4.method:" { if ($2 == "manual") print "static" else if ($2 == "auto") print "dynamic" else print "unknown" }'

Вероятно, обычные случаи, например где у вас более одного активного соединения, но может быть отправной точкой для разработки.

Кроме того, если вы измените соединение, сценарий увидит новые настройки, даже если соединение не было перезапущены, поэтому они еще не используются.

0
ответ дан 2 August 2018 в 03:21

Вы можете поместить скрипты в /etc/network/if-up.d, которые будут выполняться при активации интерфейса (либо ifup, либо Network Manager). Эти скрипты получают информацию об интерфейсе, включая переменную среды $METHOD, установленную на static или dhcp. Это описано на странице man interfaces(5).

#!/bin/sh ## This is /etc/network/if-up.d/zzzz_alex_notify_myserver case $LOGICAL in eth0) case $METHOD in dhcp) <notify server that it's on DHCP>;; static) <notify server that it's on a static IP configuration>;; esac;; esac
3
ответ дан 2 August 2018 в 03:21

Я написал эту команду, чтобы настроить DHCP-интерфейсы в сценарии оболочки:

ps -A -o cmd | grep -E '(/| )dhclient .'

Затем вы можете отменить интерфейсы, которые не управляются с помощью dhclient.

At в тот момент, когда я не знаю, работает ли это для всех дистрибутивов GNU / Linux.

0
ответ дан 2 August 2018 в 03:21

Я предполагаю, что вы ссылаетесь на назначение IP вашего компьютера ubuntu локально, а не на свой внешний / публичный IP.

Возможно, следующий результат может помочь:

cat /etc/network/interfaces |grep ^iface\ eth0 | awk -F ' ' '{print $4}'

Это напечатает либо слово static, либо dhcp, в зависимости от текущей конфигурации интерфейса eth0.

Вы также можете внести небольшие корректировки, например:

cat /etc/network/interfaces |grep ^iface\ | awk -F ' ' '{print $2, $4}'

, чтобы перечислить все интерфейсы и их конфигурацию.

-1
ответ дан 2 August 2018 в 03:21
  • 1
    Это не работает с NetworkManager, по умолчанию в Ubuntu. – enzotib 6 August 2011 в 23:37
  • 2
    Что вы подразумеваете под «не работая с NetworkManager»? Он не обновляется в соответствии с запущенной конфигурацией? Выход, конечно, работает нормально ... – Pavlos G. 7 August 2011 в 02:31
  • 3
    При использовании NetworkManager /etc/network/interfaces не содержат никакой информации об eth0 или wlan0 или аналогичных – enzotib 7 August 2011 в 02:33

Его гораздо проще определить, что:

Просто отключите машину от сети. Если вы видите ip-адрес в выводе ifconfig для этого интерфейса, тогда он динамически присваивается динамически.

рассматривает delaflota

-1
ответ дан 4 August 2018 в 19:18

Другой способ - использовать инструменты NetworkManager, а именно nm-tool и nmcli.

Я написал следующий сценарий:

#!/bin/sh # get the connection id of the active connection get_con_id() { nm-tool | awk ' $1 == "-" { dev = $3 id = dev if (NF > 4 && match($0, "\\[(.*)\\]", a)) id = a[1] } /^ / && $1 == "State:" && $2 == "connected" { print id }' } # get the address type of the active connection nmcli con list id "$(get_con_id)" | awk ' $1 == "ipv4.method:" { if ($2 == "manual") print "static" else if ($2 == "auto") print "dynamic" else print "unknown" }'

Вероятно, обычные случаи, например где у вас более одного активного соединения, но может быть отправной точкой для разработки.

Кроме того, если вы измените соединение, сценарий увидит новые настройки, даже если соединение не было перезапущены, поэтому они еще не используются.

0
ответ дан 4 August 2018 в 19:18

Вы можете поместить скрипты в /etc/network/if-up.d, которые будут выполняться при активации интерфейса (либо ifup, либо Network Manager). Эти скрипты получают информацию об интерфейсе, включая переменную среды $METHOD, установленную на static или dhcp. Это описано на странице man interfaces(5).

#!/bin/sh ## This is /etc/network/if-up.d/zzzz_alex_notify_myserver case $LOGICAL in eth0) case $METHOD in dhcp) <notify server that it's on DHCP>;; static) <notify server that it's on a static IP configuration>;; esac;; esac
3
ответ дан 4 August 2018 в 19:18

Я написал эту команду, чтобы настроить DHCP-интерфейсы в сценарии оболочки:

ps -A -o cmd | grep -E '(/| )dhclient .'

Затем вы можете отменить интерфейсы, которые не управляются с помощью dhclient.

At в тот момент, когда я не знаю, работает ли это для всех дистрибутивов GNU / Linux.

0
ответ дан 4 August 2018 в 19:18

Я предполагаю, что вы ссылаетесь на назначение IP вашего компьютера ubuntu локально, а не на свой внешний / публичный IP.

Возможно, следующий результат может помочь:

cat /etc/network/interfaces |grep ^iface\ eth0 | awk -F ' ' '{print $4}'

Это напечатает либо слово static, либо dhcp, в зависимости от текущей конфигурации интерфейса eth0.

Вы также можете внести небольшие корректировки, например:

cat /etc/network/interfaces |grep ^iface\ | awk -F ' ' '{print $2, $4}'

, чтобы перечислить все интерфейсы и их конфигурацию.

-1
ответ дан 4 August 2018 в 19:18
  • 1
    Это не работает с NetworkManager, по умолчанию в Ubuntu. – enzotib 6 August 2011 в 23:37
  • 2
    Что вы подразумеваете под «не работая с NetworkManager»? Он не обновляется в соответствии с запущенной конфигурацией? Выход, конечно, работает нормально ... – Pavlos G. 7 August 2011 в 02:31
  • 3
    При использовании NetworkManager /etc/network/interfaces не содержат никакой информации об eth0 или wlan0 или аналогичных – enzotib 7 August 2011 в 02:33

Его гораздо проще определить, что:

Просто отключите машину от сети. Если вы видите ip-адрес в выводе ifconfig для этого интерфейса, тогда он динамически присваивается динамически.

рассматривает delaflota

-1
ответ дан 6 August 2018 в 03:31

Другой способ - использовать инструменты NetworkManager, а именно nm-tool и nmcli.

Я написал следующий сценарий:

#!/bin/sh # get the connection id of the active connection get_con_id() { nm-tool | awk ' $1 == "-" { dev = $3 id = dev if (NF > 4 && match($0, "\\[(.*)\\]", a)) id = a[1] } /^ / && $1 == "State:" && $2 == "connected" { print id }' } # get the address type of the active connection nmcli con list id "$(get_con_id)" | awk ' $1 == "ipv4.method:" { if ($2 == "manual") print "static" else if ($2 == "auto") print "dynamic" else print "unknown" }'

Вероятно, обычные случаи, например где у вас более одного активного соединения, но может быть отправной точкой для разработки.

Кроме того, если вы измените соединение, сценарий увидит новые настройки, даже если соединение не было перезапущены, поэтому они еще не используются.

0
ответ дан 6 August 2018 в 03:31

Вы можете поместить скрипты в /etc/network/if-up.d, которые будут выполняться при активации интерфейса (либо ifup, либо Network Manager). Эти скрипты получают информацию об интерфейсе, включая переменную среды $METHOD, установленную на static или dhcp. Это описано на странице man interfaces(5).

#!/bin/sh ## This is /etc/network/if-up.d/zzzz_alex_notify_myserver case $LOGICAL in eth0) case $METHOD in dhcp) <notify server that it's on DHCP>;; static) <notify server that it's on a static IP configuration>;; esac;; esac
3
ответ дан 6 August 2018 в 03:31

Я написал эту команду, чтобы настроить DHCP-интерфейсы в сценарии оболочки:

ps -A -o cmd | grep -E '(/| )dhclient .'

Затем вы можете отменить интерфейсы, которые не управляются с помощью dhclient.

At в тот момент, когда я не знаю, работает ли это для всех дистрибутивов GNU / Linux.

0
ответ дан 6 August 2018 в 03:31

Я предполагаю, что вы ссылаетесь на назначение IP вашего компьютера ubuntu локально, а не на свой внешний / публичный IP.

Возможно, следующий результат может помочь:

cat /etc/network/interfaces |grep ^iface\ eth0 | awk -F ' ' '{print $4}'

Это напечатает либо слово static, либо dhcp, в зависимости от текущей конфигурации интерфейса eth0.

Вы также можете внести небольшие корректировки, например:

cat /etc/network/interfaces |grep ^iface\ | awk -F ' ' '{print $2, $4}'

, чтобы перечислить все интерфейсы и их конфигурацию.

-1
ответ дан 6 August 2018 в 03:31
  • 1
    Это не работает с NetworkManager, по умолчанию в Ubuntu. – enzotib 6 August 2011 в 23:37
  • 2
    Что вы подразумеваете под «не работая с NetworkManager»? Он не обновляется в соответствии с запущенной конфигурацией? Выход, конечно, работает нормально ... – Pavlos G. 7 August 2011 в 02:31
  • 3
    При использовании NetworkManager /etc/network/interfaces не содержат никакой информации об eth0 или wlan0 или аналогичных – enzotib 7 August 2011 в 02:33

Его гораздо проще определить, что:

Просто отключите машину от сети. Если вы видите ip-адрес в выводе ifconfig для этого интерфейса, тогда он динамически присваивается динамически.

рассматривает delaflota

-1
ответ дан 7 August 2018 в 21:19

Другой способ - использовать инструменты NetworkManager, а именно nm-tool и nmcli.

Я написал следующий сценарий:

#!/bin/sh # get the connection id of the active connection get_con_id() { nm-tool | awk ' $1 == "-" { dev = $3 id = dev if (NF > 4 && match($0, "\\[(.*)\\]", a)) id = a[1] } /^ / && $1 == "State:" && $2 == "connected" { print id }' } # get the address type of the active connection nmcli con list id "$(get_con_id)" | awk ' $1 == "ipv4.method:" { if ($2 == "manual") print "static" else if ($2 == "auto") print "dynamic" else print "unknown" }'

Вероятно, обычные случаи, например где у вас более одного активного соединения, но может быть отправной точкой для разработки.

Кроме того, если вы измените соединение, сценарий увидит новые настройки, даже если соединение не было перезапущены, поэтому они еще не используются.

0
ответ дан 7 August 2018 в 21:19

Вы можете поместить скрипты в /etc/network/if-up.d, которые будут выполняться при активации интерфейса (либо ifup, либо Network Manager). Эти скрипты получают информацию об интерфейсе, включая переменную среды $METHOD, установленную на static или dhcp. Это описано на странице man interfaces(5).

#!/bin/sh ## This is /etc/network/if-up.d/zzzz_alex_notify_myserver case $LOGICAL in eth0) case $METHOD in dhcp) <notify server that it's on DHCP>;; static) <notify server that it's on a static IP configuration>;; esac;; esac
3
ответ дан 7 August 2018 в 21:19

Я написал эту команду, чтобы получить настроенные интерфейсы DHCP в сценарии оболочки:

ps -A -o cmd | grep -E '(/| )dhclient .'

Затем вы можете отменить интерфейсы, которые не управляются с помощью dhclient.

At в тот момент, когда я не знаю, работает ли это для всех дистрибутивов GNU / Linux.

0
ответ дан 7 August 2018 в 21:19

Я предполагаю, что вы ссылаетесь на назначение IP вашего компьютера ubuntu локально, а не на свой внешний / публичный IP.

Возможно, следующий результат может помочь:

cat /etc/network/interfaces |grep ^iface\ eth0 | awk -F ' ' '{print $4}'

Это напечатает либо слово static, либо dhcp, в зависимости от текущей конфигурации интерфейса eth0.

Вы также можете внести небольшие корректировки, например:

cat /etc/network/interfaces |grep ^iface\ | awk -F ' ' '{print $2, $4}'

, чтобы перечислить все интерфейсы и их конфигурацию.

-1
ответ дан 7 August 2018 в 21:19
  • 1
    Это не работает с NetworkManager, по умолчанию в Ubuntu. – enzotib 6 August 2011 в 23:37
  • 2
    Что вы подразумеваете под «не работая с NetworkManager»? Он не обновляется в соответствии с запущенной конфигурацией? Выход, конечно, работает нормально ... – Pavlos G. 7 August 2011 в 02:31
  • 3
    При использовании NetworkManager /etc/network/interfaces не содержат никакой информации об eth0 или wlan0 или аналогичных – enzotib 7 August 2011 в 02:33

Я написал эту команду, чтобы настроить DHCP-интерфейсы в сценарии оболочки:

  ps -A -o cmd |  grep -E '(/ |) dhclient.'   

Тогда вы можете отменить интерфейсы, которые не управляются dhclient .

На данный момент я не знаю, работает ли это для всех GNU / Дистрибутивы Linux.

0
ответ дан 10 August 2018 в 09:37

Я предполагаю, что вы ссылаетесь на назначение IP вашего компьютера ubuntu локально, а не на свой внешний / публичный IP.

Возможно, следующий результат может помочь:

cat / etc / network / interfaces | grep ^ iface \ eth0 | awk -F '' '{print $ 4}'

Это напечатает либо слово static, либо dhcp, в зависимости от текущей конфигурации интерфейса eth0.

Вы можете также выполняйте небольшие настройки, например:

cat / etc / network / interfaces | grep ^ iface \ | awk -F '' '{print $ 2, $ 4}'

, чтобы перечислить все интерфейсы и их конфигурацию.

-1
ответ дан 10 August 2018 в 09:37

Вы можете поместить скрипты в /etc/network/if-up.d для запуска, когда активирован интерфейс (либо ifup , либо Network Manager). Эти сценарии получают информацию об интерфейсе, включая переменную среды $ METHOD , установленную на static или dhcp . Это документировано на странице интерфейсов (5) man .

  #! / Bin / sh ## Это /etc/network/if-up.d/  zzzz_alex_notify_myserver case $ LOGICAL in eth0) case $ METHOD в dhcp) & lt; уведомлять сервер, что он находится на DHCP & gt ;;;  static) & lt; уведомлять сервер о том, что он находится в статической конфигурации IP & gt ;;;  ESAC ;;  esac  
3
ответ дан 10 August 2018 в 09:37

Другой способ - использовать инструменты NetworkManager, а именно nm-tool и nmcli .

Я написал следующий сценарий:

  #! / bin / sh # получить идентификатор соединения активного соединения get_con_id () {nm-tool |  awk '$ 1 == "-" {dev = $ 3 id = dev if (NF & gt; 4 & amp; & amp; match ($ 0, "\\ [(. *) \\]", a)) id = a [1  ]} / ^ / & amp; & amp;  $ 1 == "State:" & amp; & amp; & amp;  $ 2 == "connected" {print id} '} # получить тип адреса активного соединения nmcli con list id "$ (get_con_id)" |  awk '$ 1 == "ipv4.method:" {if ($ 2 == "manual") print "static" else if ($ 2 == "auto") print "dynamic" else print "unknown"}'   

Вероятно, он прерывается в нестандартных случаях, например где у вас более одного активного соединения, но может быть отправной точкой для разработки.

Также, если вы измените соединение, сценарий увидит новые настройки, даже если соединение не было перезапущены, поэтому они еще не используются.

0
ответ дан 10 August 2018 в 09:37

Его гораздо проще определить, что:

Просто отключите машину от сети. Если вы видите ip-адрес в выводе ifconfig для этого интерфейса, тогда он динамически присваивается динамически.

рассматривает delaflota

-1
ответ дан 10 August 2018 в 09:37

Другие вопросы по тегам:

Похожие вопросы: