LINUX.ORG.RU

Network manager в коммандной строке


0

0

Всем привет!

Нужно удобное управление сетью из GUI (KDE) и из консоли. В первом приближении networkmanager (knetworkmanager) хорошая штука. Но только в GUI. Несмотря на наличие консольных утилит (cnetworkmanger, nmcli), в упор не могу заставить поднять сеть с выклбченным GUI. Комманды `cnetworkmanager -u` и `nmcli con list` не хотят выдавать доступные подключения если запускать их без иксов, тогда как если запустить их из консоли в KDE - выдают. Как в networkmanager увидеть доступные продключения из коммандной строки при выключенном KDE?

★★★★★

Оспаде...

ifconfig тебе в руки

Zhbert ★★★★★
()

Кстати, задавался подобным вопросом, ибо в init 3 оно не работало. Неужели у него нет нормальных средств управления из консоли?

ostin ★★★★★
()
Ответ на: комментарий от fang90

Того, что по идее должны быть средства управления им и вне иксов, раз демон есть. Про ивконфиг и иже с ним даже дети знаю, ты нам про nm расскажи.

ostin ★★★★★
()

как вариант - посмотри wicd

Nao ★★★★★
()

wicd, к примеру, прекрасно стартует как демон и сеть дефолтную ловит ) А так - да. ifconfig <eth0\wlan0> up и далее как полагается О_О

shredy
()

может, стоить посмотреть, как он общается с кдеешными/гномовскими апплетами через dbus? А потом слать те же команды из шелла с помощью dbus-send/qdbus.

demidrol ★★★★★
()
Ответ на: комментарий от fang90

Скажи, что надо сотворить networkmanager'ом из консоли и я постараюсь ответить как это сделать.

Был бы очень признателен

Итак, в KDE:

$ cnetworkmanager -s
Active | Name | Type
---------+---------+--------
$ cnetworkmanager -u
Active | Name | Type
-------+------+--------
*......| wifi | 802-11-wireless
То есть нет системных профайлов, но есть один пользовательский

То же выдает через dbus:

$ dbus-send --system --print-reply --dest=org.freedesktop.NetworkManagerSystemSettings "/org/freedesktop/NetworkManagerSettings" org.freedesktop.NetworkManagerSettings.ListConnections
method return sender=:1.5 -> dest=:1.33 reply_serial=2
   array [
   ]
$ dbus-send --system --print-reply --dest=org.freedesktop.NetworkManagerUserSettings "/org/freedesktop/NetworkManagerSettings" org.freedesktop.NetworkManagerSettings.ListConnections
method return sender=:1.10 -> dest=:1.36 reply_serial=2
   array [
      object path "/org/freedesktop/NetworkManagerSettings/0"
   ]

То же выдает nmcli:

$ nmcli con list
NAME                      UUID                                   TYPE              SCOPE    TIMESTAMP-REAL
NAME                      UUID                                   TYPE              SCOPE    TIMESTAMP-REAL
wifi                   0b74e424-64ac-4247-844f-64444b494149   802-11-wireless   user     Вск 21 Ноя 2010 02:02:44

В консоли без иксов:

$ cnetworkmanager -s
Active | Name | Type
---------+---------+--------
$ cnetworkmanager -u
org.freedesktop.DBus.Error.ServiceUnknown: The name org.freedesktop.NetworkManagerUserSettings was not provided by any .service files
То есть нет системных настроек, а к пользовательским вообще нельзя обратиться!

То же выдает через dbus:

$ dbus-send --system --print-reply --dest=org.freedesktop.NetworkManagerSystemSettings "/org/freedesktop/NetworkManagerSettings" org.freedesktop.NetworkManagerSettings.ListConnections
method return sender=:1.5 -> dest=:1.55 reply_serial=2
   array [
   ]
$ dbus-send --system --print-reply --dest=org.freedesktop.NetworkManagerUserSettings "/org/freedesktop/NetworkManagerSettings" org.freedesktop.NetworkManagerSettings.ListConnections
Error org.freedesktop.DBus.Error.ServiceUnknown: The name org.freedesktop.NetworkManagerUserSettings was not provided by any .service files

То же выдает nmcli:

$ nmcli con list
NAME                      UUID                                   TYPE              SCOPE    TIMESTAMP-REAL
NAME                      UUID                                   TYPE              SCOPE    TIMESTAMP-REAL

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

На всякий случай:

$ cat /etc/NetworkManager/nm-system-settings.conf 
[main]
plugins=ifnet,keyfile

[ifnet]
managed=true
auto_refresh=true
$ ls /etc/NetworkManager/system-connections/
testt
То есть один системный профайл есть (правда не знаю насколько он корректен).

Heeelp!

Kroz ★★★★★
() автор топика

wicd-curses - очень удобная вещь.

kernelpanic ★★★★★
()
Ответ на: комментарий от Kroz

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

Юзеровские настройки должны быть в юзеровской директории, например для Gnome это .gconf/system/networking/, для KDE не знаю, но должно быть, что-то подобное.
А вот насчет системных настроек ты можешь добавить свои скрипты в /etc/NetworkManager/dispatcher.d/ (только не правь 01ifupdown) и сконфижить в /etc/NetworkManager/nm-system-settings.conf как об этом сказано здесь

fang90 ★★★★★
()

пользуйтесь поиском!

desktop megabaks # eix cnetworkmanager
* net-misc/cnetworkmanager
     Available versions:  (~)0.21-r1 (~)0.21.1
     Homepage:            http://vidner.net/martin/software/cnetworkmanager/
     Description:         Command line interface for NetworkManager.

desktop megabaks #

megabaks ★★★★
()
Ответ на: комментарий от megabaks

Молодец, поиском пользоваться умеешь. А читать?

Несмотря на наличие консольных утилит (cnetworkmanger, nmcli), в упор не могу заставить поднять сеть с выклбченным GUI. Комманды `cnetworkmanager -u` и `nmcli con list` не хотят выдавать доступные подключения если запускать их без иксов, тогда как если запустить их из консоли в KDE - выдают.

ostin ★★★★★
()
Ответ на: комментарий от fang90

Любопытная статья, посылать сообщения через dbus. Спасибо.

ostin ★★★★★
()

можно еще через кдешный solid попробовать:

shutty@lappy ~ $ solid-network --commands

Syntax:

  solid-network listdevices
             # List the network devices present.

  solid-network listnetworks 'uni'
             # List the networks known to the device specified by 'uni'.

  solid-network query (status|wireless|wireless-hardware)|(interface 'uni')|(network 'device-uni' 'network-uni')
             # Query whether networking features are active or not.
             # - If the 'status' option is given, return whether
             # networking is enabled for the system
             # - If the 'wireless' option is given, return whether                                                                                                                              
             # wireless is enabled for the system                                                                                                                                               
             # - If the 'wireless-hardware' option is given,                                                                                                                                    
             #  return whether the wireless hardware is enabled                                                                                                                                 
             # - If the 'interface' option is given, print the
             # properties of the network interface that 'uni' refers to.
             # - If the 'network' option is given, print the
             # properties of the network on 'device-uni' that 'network-uni' refers to.

  solid-network set wireless (enabled|disabled)
             # Enable or disable networking on this system.

  solid-network set networking (enabled|disabled)
             # Enable or disable networking on this system.

  solid-network set network 'device-uni' 'network-uni' [authentication 'key']
             # Activate the network 'network-uni' on 'device-uni'.
             # Optionally, use WEP128, open-system encryption with hex key 'key'. (Hardcoded)
             # Where 'authentication' is one of:
             # wep hex64|ascii64|hex128|ascii128|passphrase64|passphrase128 'key' [open|shared]
             # wpapsk wpa|wpa2 tkip|ccmp-aes password
             # wpaeap UNIMPLEMENTED IN SOLIDSHELL

shutty
()
Ответ на: комментарий от fang90

Юзеровские настройки должны быть в юзеровской директории, например для Gnome это .gconf/system/networking/, для KDE не знаю, но должно быть, что-то подобное.

В KDE они находятся в ~/.kde4/share/apps/networkmanagement/connections

А вот насчет системных настроек ты можешь добавить свои скрипты в /etc/NetworkManager/dispatcher.d/

Например? Какие скрипты? Когда эти скрипты запускаются и что в них должно быть? Пример скрипта?

Сыылку данную вами - видел, но она не объясняет как создать системный connection.

Это какой-то алес!

Сегодня обнаружил парочку «системных» connections.

$ nmcli con list
NAME                      UUID                                   TYPE              SCOPE    TIMESTAMP-REAL                    
System (eth1)             93643886-e1a1-7d56-788a-610b914a3797   802-3-ethernet    system   never                             
System (eth0)             f3f8b0a6-0bb0-2b7b-9d30-b18634ddb983   802-3-ethernet    system   never                             
NAME                      UUID                                   TYPE              SCOPE    TIMESTAMP-REAL                    
wifi                   0b79e424-62ac-42a7-873f-67db0b69e109   802-11-wireless   user     Вск 21 Ноя 2010 13:29:47
Откуда они? И это при том, что eth0 интерфейса у меня нет (чего-то нахимичил в ядре, еще не исправил)!!!
$ ifconfig eth0
eth0: error fetching interface information: Device not found

Опытным путем обнаружилось что на это влияет параметр managed=true в nm-system-settings.conf : если установит его в false - системные connections пропадают.

Но! Каталог /etc/NetworkManager/system-connections/ пуст! Даже когда я туда добавляю что-то (свои юзеровские connections или примеры из предложенной статьи) - ничего не меняется.

Кто-то вообще настраивал системные connections? Можно пример файла и где он должен лежать?

Я так понял, что гномовская утилита нормально создает системые connections. Может кто-то создаст, а потом напишет сюда где что в конфигурационных файлах меняется?

Kroz ★★★★★
() автор топика
Ответ на: комментарий от Kroz

Будущим поколениям

Будущим поколениям

Пользуемся man NetworkManager.conf - имеено так, с большой буквы!

Во-первых смотрим файл /etc/NetworkManager/nm-system-settings.conf на строчку plugins=ifnet,keyfile . keyfile означает поддержку key-файлов вчастности в каталоге system-connections . ifnet означает - поддержка стандартной конфигурации сети, которая в Gentoo находится в /etc/conf/net . Это (!@#!@#) не описано ни в одной документации, очевидно это чито гентушный прикол. Поддержка конфигурации какая-то непонятная, и по факту пришлось ее отключить, это было сделано правкой /etc/conf/net файла: там остались только строки:

managed_lo=false
managed_eth0=false
managed_eth1=false
После этого ушли те загадочный system connections о которых я говорил.

Затем очень рекомендую добавить в файл /etc/NetworkManager/nm-system-settings.conf строку level=DEBUG в секции [logging] и далее смотреть лог коммандой:

$ watch -n 1 "tail -n 20 /var/log/messages | grep NetworkManager | grep -v debug | grep -v proxy"
(tail -f не работает с «двойным» grep)

При установленной опции auto_refresh=true networkmanager сам подхватывает key-файлы изд директории /etc/NetworkManager/system-connections , а если в них ошибка - пишет в /var/log/messages .

Далее была попытка создать нормальный key-файл для wifi, и это было очень непросто. Для начала был взят пример с обычной Ethernet сеткой ( отсюда http://live.gnome.org/NetworkManager/SystemSettings ) и заменен тип сети на 802-11-wireless - но это ничего не дало. Затем была предпринята попытка взять готовый user-конфиг, созданный knetworkmanager , но он не работает. Более - он имеет неправильный синтаксис!!! Например keymgmt=None должен быть заменен на key-mgmt=none и такого там много. Самая нормальная документация - в исходниках networkmanager!!!

git clone git://git.freedesktop.org/git/NetworkManager/NetworkManager.git

Там есть файл для проверки настроек wireless: NetworkManager/system-settings/plugins/keyfile/tests/keyfiles/Test_Wireless_Connection . Вот его и нужно брать за шаблон. Далее, параметры этого файла хорошо описаны здесь: NetworkManager/libnm-util/nm-setting-wireless-security.c . Ну, и наконец-то, (по идее) рабочий key-файл для wifi:

[connection]
id=Test Wireless Connection
uuid=2f962388-e5f3-45af-a62c-ac220b8f7baa
type=802-11-wireless
autoconnect=false

[802-11-wireless]
ssid=wifi
mode=adhoc
channel=0
rate=0
tx-power=0
mtu=0
bssid=00:1a:33:44:99:82

[802-11-wireless-security]
key-mgmt=none
wep-tx-keyidx=0
auth-alg=open
wep-key0=1234567890
wep-key-type=1

[ipv4]
method=auto
ignore-auto-routes=false
ignore-auto-dns=false
never-default=false
«По идее рабочий» потому, что по факту мне подключиться не удалось, но я так понял, что это уже беда не key-файла. Так, что следующий вопрос мой будет ниже.

Kroz ★★★★★
() автор топика
Ответ на: Будущим поколениям от Kroz

По факту коннекта не происходит даже к незашифрованной сетке. Сразу скажу - Ad-Hoc .

Что может значить вот эта ерунда:

Nov 21 18:48:35 nlix NetworkManager[3455]: <info> Activation (eth1) starting connection 'Test Wireless Connection'
Nov 21 18:48:35 nlix NetworkManager[3455]: <info> (eth1): device state change: 3 -> 4 (reason 0)
Nov 21 18:48:35 nlix NetworkManager[3455]: <info> Activation (eth1) Stage 1 of 5 (Device Prepare) scheduled...
Nov 21 18:48:35 nlix NetworkManager[3455]: <info> Activation (eth1) Stage 1 of 5 (Device Prepare) started...
Nov 21 18:48:35 nlix NetworkManager[3455]: <info> Activation (eth1) Stage 2 of 5 (Device Configure) scheduled...
Nov 21 18:48:35 nlix NetworkManager[3455]: <info> Activation (eth1) Stage 1 of 5 (Device Prepare) complete.
Nov 21 18:48:35 nlix NetworkManager[3455]: <info> Activation (eth1) Stage 2 of 5 (Device Configure) starting...
Nov 21 18:48:35 nlix NetworkManager[3455]: <info> (eth1): device state change: 4 -> 5 (reason 0)
Nov 21 18:48:35 nlix NetworkManager[3455]: <info> Activation (eth1/wireless): connection 'Test Wireless Connection' requires no security.  No secrets needed.
Nov 21 18:48:35 nlix NetworkManager[3455]: <info> Config: added 'ssid' value 'wifi'
Nov 21 18:48:35 nlix NetworkManager[3455]: <info> Config: added 'mode' value '1'
Nov 21 18:48:35 nlix NetworkManager[3455]: <info> Config: added 'frequency' value '2412'
Nov 21 18:48:35 nlix NetworkManager[3455]: <info> Config: added 'bssid' value '00:1a:33:44:99:82'
Nov 21 18:48:35 nlix NetworkManager[3455]: <info> Config: added 'key_mgmt' value 'NONE'
Nov 21 18:48:35 nlix NetworkManager[3455]: <info> Activation (eth1) Stage 2 of 5 (Device Configure) complete.
Nov 21 18:48:35 nlix NetworkManager[3455]: <info> Config: set interface ap_scan to 2
Nov 21 18:48:35 nlix NetworkManager[3455]: <info> (eth1): supplicant connection state:  disconnected -> scanning
Nov 21 18:48:35 nlix NetworkManager[3455]: <info> (eth1): supplicant connection state:  scanning -> associating
Nov 21 18:48:35 nlix NetworkManager[3455]: <info> (eth1): supplicant connection state:  associating -> associated
Nov 21 18:48:35 nlix NetworkManager[3455]: <info> (eth1): supplicant connection state:  associated -> disconnected
Nov 21 18:48:36 nlix NetworkManager[3455]: <info> (eth1): supplicant connection state:  disconnected -> associated
Nov 21 18:48:36 nlix NetworkManager[3455]: <info> (eth1): supplicant connection state:  associated -> disconnected
Nov 21 18:48:36 nlix NetworkManager[3455]: <info> (eth1): supplicant connection state:  disconnected -> associated
Nov 21 18:48:36 nlix NetworkManager[3455]: <info> (eth1): supplicant connection state:  associated -> disconnected
Nov 21 18:48:36 nlix NetworkManager[3455]: <info> (eth1): supplicant connection state:  disconnected -> associated
Nov 21 18:48:36 nlix NetworkManager[3455]: <info> (eth1): supplicant connection state:  associated -> disconnected
Nov 21 18:48:36 nlix NetworkManager[3455]: <info> (eth1): supplicant connection state:  disconnected -> associated
Nov 21 18:48:36 nlix NetworkManager[3455]: <info> (eth1): supplicant connection state:  associated -> disconnected
Nov 21 18:48:37 nlix NetworkManager[3455]: <info> (eth1): supplicant connection state:  disconnected -> associated
Nov 21 18:48:37 nlix NetworkManager[3455]: <info> (eth1): supplicant connection state:  associated -> disconnected
Nov 21 18:48:37 nlix NetworkManager[3455]: <info> (eth1): supplicant connection state:  disconnected -> associated
Kroz ★★★★★
() автор топика
Ответ на: комментарий от Kroz

Грядущим поколениям

Урррааааааааа!!! Заработала!!!!!!!!!!!!

Грядущим поколениям: рабочий key-файл для соединения по wifi методом Ad-Hoc с WEP ключем и с запросом адреса по DHCP (закомментировано - ручная установка адреса). Файл должен лежать в каталоге /etc/NetworkManager/system-connections и называться так же как и поле id в файле (в данном случае 'working'). В nm-system-settings.conf должет быть подключен плагин keyfile (например у меня plugins=ifnet,keyfile):

[connection]
id=working
uuid=2f962388-e5f3-45af-a62c-ac220b8f7baa
type=802-11-wireless
autoconnect=false
timestamp=1290364455

[802-11-wireless-security]
key-mgmt=none
auth-alg=open
wep-key0=1234567890
wep-key-type=1

[ipv4]
method=auto
#method=manual
#addresses=10.1.0.2;16;10.1.0.1;

[802-11-wireless]
ssid=wifi
mode=adhoc
band=bg
channel=3

Аналогичная конфигурация:

$ iwconfig eth2 essid wifi mode Ad-Hoc key 1234567890
Важно!

1. Файл должен называться так же, как и указано в переменной id. Если это не так, networkmanager скопирует key-файл в файл с нужным именем.

2. В данном конфиге вручную устанавливается частота (опции band и channel). Без них networkmanager выбирает другую частоту, и, если Ad-Hoc сетка с таким-же ssid уже существует на другой частоте, то эти частоты могу не совпасть.

3. При установке IP адреса вручную (закомментировано) обратите внимание на формат адреса: разделители ";" и вконце также разделитель. Формат: адреc;маска;шлюз; . Если шлюза нет - указать 0.

Версия и USE-флаги networkmanager'a:

net-misc/networkmanager-0.8.2  USE="avahi connection-sharing dhcpcd nss resolvconf -bluetooth -dhclient -doc -gnutls"

Спасибо всем кто откликнулся. Не смотря на то, что решению это не сильно помогло - узнал много чего нового :)

Kroz ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.