Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Управление Network Manager'ом из консоли.  (Прочитано 34010 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Psy[H[]

  • Автор темы
  • Активист
  • *
  • Сообщений: 883
  • Маньяк. Ставлю Линух на все что попадется под руку
    • Просмотр профиля
Долго мучил гуголь, уже начал перелопачивать механизмы взаимодействия NM и DBus, но тут внезапно наткнулся на готовое решение от тов. coredump с форума французского сообщества Ubuntu ( http://forum.ubuntu-fr.org/viewtopic.php?pid=3170479#p3170479 ). Если вдруг кто из читающих эту тему зарегистрирован и там, передайте ему большое человеческое спасибо!

Напомню, что Network Manager оперирует в первую очередь не устройствами а сохраненными профилями соединений, каждый из которых может быть привязан к определенному устройству, или же наоборот применен к  любому из подходящих устройств.

Профили системного уровня хранятся в /etc/NetworkManager/system-connections/
Профили пользовательского уровня хранятся разными способами в зависимости от использующегося фронтенда. Например гномовский апплет хранит их в gconf.

При общении с NM через DBus именование и адресация всех профилей, устройств и прочего совершенно иная, поэтому просто взять какую-нибудь команду за шаблон и подставить в нее имя соединения не получится.

Далее две выжимки из постинга от  coredump. Первая будет интересна технически продвинутым, вторая - скрипт для простоейшего управления соединениями:

1. Полезные команды dbus-send для запроса параметров и адресов соединений, а также управления соединениями:

(Нажмите, чтобы показать/скрыть)


2. Скрипт для простого управления соединениями:

(Нажмите, чтобы показать/скрыть)

Сохраняем скрипт в текстовый файл, скажем, под именем nmcli
далее из папки, куда сохранили, делаем:
sudo cp nmcli /usr/local/bin/
sudo chmod ugo+x /usr/local/bin/nmcli

После чего собственно управление будет таким:
nmcli connection_name start|stop
То есть чтобы, например, активировать соединение c именем "MyNetwork" пишем:
nmcli MyNetwork startЧтобы деактивировать - соответственно stop

Чтобы посмотреть список доступных соединений - просто вызываем скрипт без параметров.
« Последнее редактирование: 09 Января 2010, 01:43:07 от Psy[H[] »
Я знаю только то, что ничего не знаю.
                                     

Оффлайн athost

  • Старожил
  • *
  • Сообщений: 1897
    • Просмотр профиля
Re: Управление Network Manager'ом из консоли.
« Ответ #1 : 08 Января 2010, 23:11:07 »
Спасибо, очень полезная информация.

Оффлайн Psy[H[]

  • Автор темы
  • Активист
  • *
  • Сообщений: 883
  • Маньяк. Ставлю Линух на все что попадется под руку
    • Просмотр профиля
Re: Управление Network Manager'ом из консоли.
« Ответ #2 : 08 Января 2010, 23:21:59 »
Кстати, если кто рубит в DBus, подскажите как выключать и включать "сеть" и "беспроводную сеть"  (две галки в меню апплета NM) Насколько я понимаю, там параметры комадны dbus-send должны быть универсальны, а не как в случае с соединениями. Хотя не факт...
Я знаю только то, что ничего не знаю.
                                     

serenitatis

  • Гость
Re: Управление Network Manager'ом из консоли.
« Ответ #3 : 10 Января 2010, 11:42:29 »
Попробовал скрипт, очень удобная штука. Есть вопрос - даю команду на остановку соединения, оно останавливается, а потом снова соединяется. Это бага или фича? :)

Оффлайн Psy[H[]

  • Автор темы
  • Активист
  • *
  • Сообщений: 883
  • Маньяк. Ставлю Линух на все что попадется под руку
    • Просмотр профиля
Re: Управление Network Manager'ом из консоли.
« Ответ #4 : 10 Января 2010, 14:23:14 »
Скорее всего недочет.
Даже если прибить апплет, ничего не изменится. Видимо апплет при отключении соединения посылает не только сигнал отключения, но и еще что-то, что блокирует переподключение. А в скрипте этого нет..
Соединения, у которых не стоит галка автоматического подключения, а также любое vpn, не переподнимаются.

Попробовал посмотреть через dbus-monitor  --system что происходит при отключении соединения через апплет и скрипт - вообще ни слова о DeactivateConnection. Значит он не все показывает... не могу разобраться как его заставить...
« Последнее редактирование: 10 Января 2010, 14:44:41 от Psy[H[] »
Я знаю только то, что ничего не знаю.
                                     

Оффлайн prato

  • Новичок
  • *
  • Сообщений: 11
    • Просмотр профиля
Re: Управление Network Manager'ом из консоли.
« Ответ #5 : 10 Января 2010, 22:18:43 »
Спасибо, полезно. NM приобретает все более человеческое лицо.

Оффлайн [DarkNet]Alpha

  • Активист
  • *
  • Сообщений: 987
  • Эмоциональный эльдар
    • Просмотр профиля
    • EBM-радио
Re: Управление Network Manager'ом из консоли.
« Ответ #6 : 29 Января 2010, 17:48:09 »
Спасибо! Наконец-то автоматизировал VPN.

Оффлайн soltes

  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Re: Управление Network Manager'ом из консоли.
« Ответ #7 : 06 Февраля 2010, 01:48:53 »
когда дело доходит до:
sudo nano /etc/NetworkManager/system-connections/имя_вашего_vpn-соединенияполучаеться облом, у меня нет ничего похожего на название моего соединения, я так же полазил по папкам и ненаешь ничего похожего, на название моего соеднения

Оффлайн dax02

  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
Re: Управление Network Manager'ом из консоли.
« Ответ #8 : 08 Марта 2010, 19:22:36 »
Большое спасибо автору за приведенные команды и скрипт. Хоть что-то стало яснее. А то мучаюсь с NM уже очено давно, переходил от него к wicd, к ручным настройкам, теперь снова вернулся и твердо решил разобраться, как он работает, но информации крайне мало (что странно, т.к. NM поставляется со многими дистрибутивами и, судя по форумам, с ним мучаюсь далеко не один я).

При работе со скриптом заметил следующие странности.

При дективации соединения (параметр скрипта stop) выводится:
Error org.freedesktop.DBus.Error.Disconnected: Connection was disconnected before a reply was received
при этом соединение остается активным.

После ввода MAC-адреса в соответствующее поле редактора соединений и нажания Apply это соединение пропадает из перечня доступных по нажатию левой клавиши на иконку NM-Applet (кстати, v0.7.0.100, а система Ubuntu 9.04). При попытке активировать его с помощью скрипта выводится ошибка
Error org.freedesktop.NetworkManager.ConnectionIncompatible: The connection's MAC address did not match this device.
В этом месте еще раз хотелось бы поблагодарить за скрипт и этот топик, т.к. только он помог мне понять, почему упорно не появлялись соединения с моим провайдером (который привязывает клиентов к фиксированному IP и MAC).
Если поле MAC-адреса очистить, то всё ОК. Приходится присваивать MAC вручную, через ifconfig.

Оффлайн solarist

  • Новичок
  • *
  • Сообщений: 1
    • Просмотр профиля
Re: Управление Network Manager'ом из консоли.
« Ответ #9 : 08 Марта 2010, 22:13:46 »
а также любое vpn, не переподнимаются.
Заметил, что если пересохранить после nmcli connection_name stop файл /etc/NetworkManager/system-connections/имя_вашего_vpn-соединения, то переподключение становится возможным. Будут идеи по фиксу этого досадного бага?
« Последнее редактирование: 08 Марта 2010, 22:15:18 от solarist »

Martin256

  • Гость
Re: Управление Network Manager'ом из консоли.
« Ответ #10 : 16 Марта 2010, 09:38:18 »
"Сохраняем скрипт в текстовый файл, скажем, под именем nmcli
далее из папки, куда сохранили, делаем:
Код:
"
Конечно нав глупый вопрос, но как из папки запустить код?

Оффлайн Vangor

  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
Re: Управление Network Manager'ом из консоли.
« Ответ #11 : 28 Марта 2010, 16:20:00 »
Спасибо автору!

Оффлайн DiGriz69

  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Re: Управление Network Manager'ом из консоли.
« Ответ #12 : 13 Мая 2010, 22:53:50 »
Автору огромное спасибо.
Вопрос: как сделать переподключение при обрыве?

Оффлайн BDenis

  • Новичок
  • *
  • Сообщений: 12
    • Просмотр профиля
Re: Управление Network Manager'ом из консоли.
« Ответ #13 : 07 Июня 2010, 10:11:32 »
Удобный скрипт, спасибо большое.
Единственное, что смущает это подбор устройсв по их типу, ведь устройств с одним и тем же типом может быть много.
Ну и хотелось бы немножко добавить, чтобы заработало с модемными соединениями, а не только с вайфаем и езернетом (поправте первое сообщение, пожалуйста):
get_device_type_by_connection_type()
{
    echo "$1" | grep -q "ethernet" && echo 1 && return
    echo "$1" | grep -q "wireless" && echo 2 && return
    echo "$1" | grep -q "gsm" && echo 3 && return
    echo "$1" | grep -q "cdma" && echo 4 && return
    echo "$1" | grep -q "bt" && echo 5 && return
    echo 0
}
На счет блютуса (последняя строка) не совсем уверен, Но судя по исходникам NM все именно так. cdma и gsm проверял. Есть еще шестой тип — какой-то OLPC_MESH, но кто это — не знаю.

Оффлайн Fr0sT

  • Любитель
  • *
  • Сообщений: 72
    • Просмотр профиля
Re: Управление Network Manager'ом из консоли.
« Ответ #14 : 26 Июля 2010, 13:50:18 »
Спасибо автору! Нашёл-таки, как вручную запустить подключение -
dbus-send --system --dest=org.freedesktop.NetworkManager /org/freedesktop/NetworkManager org.freedesktop.NetworkManager.wake
Полные спеки:
http://projects.gnome.org/NetworkManager/developers/spec-07.html
http://projects.gnome.org/NetworkManager/developers/spec-08.html
« Последнее редактирование: 26 Июля 2010, 13:53:16 от Fr0sT »
Asus EEE PC 1000 + Ubuntu Netbook Remix 10.10

 

Страница сгенерирована за 0.041 секунд. Запросов: 25.