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


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: UBUNTU 16.04, как переключать сетевые карты при смене пользователя?  (Прочитано 4441 раз)

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

Оффлайн Valery_U

  • Автор темы
  • Новичок
  • *
  • Сообщений: 14
    • Просмотр профиля
Убрал свои строки из ~/.bashrc, перезагрузил комп...

~$ nmcli device status
УСТРОЙСТВО  ТИП       СОСТОЯНИЕ      СОЕДИНЕНИЕ             
enp2s0      ethernet  подключено     Проводное соединение 1
enp5s2      ethernet  подключено     Проводное соединение 2
lo          loopback  не настроенно  --                     

~$ nmcli c s
ИМЯ                     UUID                                  ТИП              УСТРОЙСТВО
Проводное соединение 1  8a3f90c3-7dd4-3f67-ba97-0054b54bd938  802-3-ethernet   enp2s0     
Проводное соединение 2  b2446e4c-5ddd-3d9e-89c2-8630154671ee  802-3-ethernet   enp5s2     
Poliklinika             d2b847d9-cae2-441f-93cd-bb86fad89750  802-11-wireless  --         
ZyXEL4237               1c0f90ba-22d6-4e95-a963-797901838ca2  802-11-wireless  --         

Оффлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 6836
    • Просмотр профиля
Цитировать
Без разъяснений, просто в три строки
Извольте.
Можешь истязать себя с nano. Мне роднее Midnight commander.
Создаешь скрипт (например с именем usercon):
#!/bin/sh
case ${USER} in
  user1) nmcli con down "Проводное соединение 2"
nmcli con up "Проводное соединение 1"
;;
  user2) nmcli con down "Проводное соединение 1"
nmcli con up "Проводное соединение 2"
;;
  *) ;;
esac
Где, user1, user2 заменить на конкретные имена пользователей.
Запускаешь в терминале, чтобы проверить работоспособность. Если работает, то встает вопрос, где его поместить.
В принципе можно это код поместить в файлы .bashrc в профиле каждого пользователя. Неудобство, если придется править, то править в кааждом файле.
Предлагаю поместить в /usr/local/bin. Один файл для всех.
Создаешь десктоп-файл (например с именем usercon.desktop):
[Desktop Entry]
Name=User connection
Exec=usercon
Type=Application
Icon=nm-device-wired
X-GNOME-Autostart-enabled=true
X-GNOME-Autostart-Delay=20
Для начала, можно поместить его на рабочем столе. Кликаешь по нему. Должен сработать скрипт.
Если все работает, то можно поместить десктоп-файл в автозапуск, т.е. в каталог ~/.config/autostart каждого пользователя.
В десктоп-файле строка:
X-GNOME-Autostart-Delay=20задает задержку до запуска в секундах. В некоторых DE задержка может не срабатывать. В этом случае можно изменить строку "Exec=" на такую:
Exec=sh -c 'sleep 20; usercon'У меня нет столько пользователей, чтобы проверить все досканально, а добавлять пользователя не охота. И нет столько проводных соединений. Но с одним пользователем и WIFI-соединениями все сработало.
При желании в скрипте можешь манипулировать не соединениями, а интерфейсами. Можно добавить любое число пользователей и прочий сервис.
Если не будет отключать "чужое соединение", то придется замочиться с sudoers.
« Последнее редактирование: 17 Августа 2019, 07:51:44 от andytux »

Оффлайн Valery_U

  • Автор темы
  • Новичок
  • *
  • Сообщений: 14
    • Просмотр профиля
Создаю файл /home/valery/Documents/usereth.sh
#!/bin/sh
case ${USER} in
  Valery) nmcli con down "Проводное соединение 2"
nmcli con up "Проводное соединение 1"
;;
  Smile) nmcli con down "Проводное соединение 1"
nmcli con up "Проводное соединение 2"
;;
  *) ;;
esac
Запускаю ~$ sh /home/valery/Documents/usereth.sh
Ничего не происходит...

Создаю файл /home/valery/Documents/usercon.sh
#!/bin/sh
nmcli con down "Проводное соединение 2"
nmcli con up "Проводное соединение 1"
nmcli device status
Запускаю:

~$ sh /home/valery/Documents/usercon.sh
Соединение 'Проводное соединение 2' успешно выключено (Активный путь DBus: /org/freedesktop/NetworkManager/ActiveConnection/16)
Соединение успешно активировано (адрес действующего D-Bus: /org/freedesktop/NetworkManager/ActiveConnection/17)
УСТРОЙСТВО  ТИП       СОСТОЯНИЕ      СОЕДИНЕНИЕ             
enp2s0      ethernet  подключено     Проводное соединение 1
enp5s2      ethernet  отключено      --                     
lo          loopback  не настроенно  --                     
Создаю файл /home/valery/Documents/usercon.desktop
[Desktop Entry]
Name=User connection
Exec=/home/valery/Documents/usercon.sh
Type=Application
Icon=nm-device-wired
X-GNOME-Autostart-enabled=true
X-GNOME-Autostart-Delay=20
Двойной клик на usercon.desktop
Сообщение системы "Сомнительный значок запуска"...

Ставлю "галку" "Разрешить выполнение файла как программы"
Иконка меняется на "User connection"
Двойной клик...
"Проводное соединение 2" - разорвано...

Сработало :)...

Копирую:

cp -a /home/valery/Documents/usercon.desktop /home/valery/.config/autostart/

Проверяю:

~$ ls /home/valery/.config/autostart/
qbittorrent.desktop  usercon.desktop

Запускаю:
~$ /home/valery/.config/autostart/usercon.desktop
/home/valery/.config/autostart/usercon.desktop: строка 1: [Desktop: команда не найдена
/home/valery/.config/autostart/usercon.desktop: строка 2: connection: команда не найдена
/home/valery/.config/autostart/usercon.desktop: строка 6: X-GNOME-Autostart-enabled=true: команда не найдена
/home/valery/.config/autostart/usercon.desktop: строка 7: X-GNOME-Autostart-Delay=20: команда не найдена

 :'(

Оффлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 6836
    • Просмотр профиля
Цитировать
/home/valery
Valery)
Видишь разницу? Подсказываю, В первом случае, v - маленькая, во втором V - большая.

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Создаю файл /home/valery/Documents/usereth.sh
#!/bin/sh
case ${USER} in
  [Vv]alery) nmcli con down "Проводное соединение 2"
nmcli con up "Проводное соединение 1"
;;
  [Ss]mile) nmcli con down "Проводное соединение 1"
nmcli con up "Проводное соединение 2"
;;
  *) ;;
esac
Запускаю ~$ sh /home/valery/Documents/usereth.shНичего не происходит...
Отчего-то подозреваю что valery, как и smile должны быть с маленькой буквы...


Пользователь добавил сообщение 17 Августа 2019, 17:49:19:
Запускаю:
~$ /home/valery/.config/autostart/usercon.desktop
.desktop файлы поэтому так и называются, что они работают в графическом окружении (т.е. запускаются например двойным щелчком мыши в проводнике). Для запуска в Терминале у Вас есть целевой скрипт
Exec=/home/valery/Documents/usercon.sh


Пользователь добавил сообщение 17 Августа 2019, 17:51:52:
Подозреваю что можно обойтись без отключений если убрать автовключение обоих интерфейсов...
« Последнее редактирование: 17 Августа 2019, 17:51:52 от Azure »
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн Valery_U

  • Автор темы
  • Новичок
  • *
  • Сообщений: 14
    • Просмотр профиля
Отчего-то подозреваю что valery, как и smile должны быть с маленькой буквы...
Действительно... Я считал что юзер Valery  :idiot2:

.desktop файлы поэтому так и называются, что они работают в графическом окружении
Хорошо, но сейчас после перезагрузки компа, переключений нет и при вызове терминала появляется "сообщение"
Соединение успешно активировано (адрес действующего D-Bus: /org/freedesktop/NetworkManager/ActiveConnection/2)
visudo: /etc/sudoers: Отказано в доступе
bash: /home/valery/.bashrc: строка 123: ошибка синтаксиса около неожиданной лексемы `('
bash: /home/valery/.bashrc: строка 123: `%sudo   ALL=(ALL:ALL) NOPASSWD:/sbin/ifup, /sbin/ifdown'
Подозреваю что можно обойтись без отключений если убрать автовключение обоих интерфейсов...
Хотелось, при смене пользователя, "автоматом" переключать соединение...

Оффлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 6836
    • Просмотр профиля
Цитировать
Без разъяснений, просто в три строки
Ты себя перехвалил, без разъяснений не получается.
Цитировать
Я считал что юзер Valery
Что гадать. Выполни в терминале "env". В выпавшем списке ищи USER=. Это и есть текущий пользователь.
case ${USER} inЧитает значение переменной окружения USER.
Valery) nmcli con down "Проводное соединение 2"
nmcli con up "Проводное соединение 1"
;;
Если совпадает, то выполняются соответствующие команды. Для случая "я считал" можно сделать например так:
[Vv]alery) ;;
*alery) ;;
*[Ll][Ee][Rr][Yy]) ;;
Ветку "для любого другого пользователя" можно изменить на:
*) nmcli device status;;Для отладки, можно после строки "esac", добавить строку:
echo "debug: USER[$USER]"
Цитировать
при вызове терминала появляется "сообщение"
Это остатки твоих предыдущих злодеяний. Вычищай .bashrc.
Цитировать
Хотелось, при смене пользователя, "автоматом" переключать соединение
Мне тоже кажется, что флаг "автоподключения" может мешать. НМ отключает соединение, но видя флаг "автоподключения" подключает его снова.
А роль автомата теперь должен выполнять "автостарт скрипта". Причем, автомата более умного, действующего по некоторым условиям.
Цитировать
Создаю файл /home/valery/Documents/usereth.sh
Есть плюсы и у такого подхода. Их ты сам придумаешь. Я скажу минусы.
У каждого пользователя свой файл. Сссответственн, в каждом файле можно сделать свои ошибки.
В десктоп-файле придется прописывать полный путь, для каждого пользователя свой, что опять чревато ошибками.


Пользователь добавил сообщение 18 Августа 2019, 06:54:59:
Цитировать
Двойной клик на usercon.desktop
Сообщение системы "Сомнительный значок запуска"...
Зависит от DE... Например, в LXDE не обязательно делать его исполняемым.
Цитировать
Ставлю "галку" "Разрешить выполнение файла как программы"
Иконка меняется на "User connection"
Сам уже убедился, что зависит от настроек файлового менеджера.
« Последнее редактирование: 18 Августа 2019, 06:54:59 от andytux »

Оффлайн Valery_U

  • Автор темы
  • Новичок
  • *
  • Сообщений: 14
    • Просмотр профиля
Что гадать. Выполни в терминале "env". В выпавшем списке ищи USER=
Я не гадал. В 4-х из 5-ти "общедоступных" - Valery, и только в одном valery...

Это остатки твоих предыдущих злодеяний. Вычищай .bashrc
Спасибо, почистил..

Все "причесал", но проблема осталась.
usercon.desktop при двойном клике из папки /home/valery/Documents/ - выполняется, а, при копировании его в /home/valery/.config/autostart/ и смене пользователя, ничего не происходит...
/home/valery/Documents/usereth.sh
#!/bin/sh
case ${USER} in
  valery) nmcli con down "Проводное соединение 2"
nmcli con up "Проводное соединение 1"
;;
  smile) nmcli con down "Проводное соединение 1"
nmcli con up "Проводное соединение 2"
;;
  *) ;;
esac
echo "debug: USER[$USER]

/home/valery/.config/autostart/usercon.desktop
[Desktop Entry]
Name=User connection
Exec=/home/valery/Documents/usereth.sh
Type=Application
Icon=nm-device-wired
X-GNOME-Autostart-enabled=true
X-GNOME-Autostart-Delay=20
« Последнее редактирование: 18 Августа 2019, 08:53:03 от Valery_U »

Оффлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 6836
    • Просмотр профиля
Цитировать
В 4-х из 5-ти "общедоступных"
Не знаю, кто это такие. Имя текущего пользователя в переменной окружения USER.
Цитировать
при копировании его в /home/valery/.config/autostart/ и смене пользователя, ничего не происходит
При смене smile на valery? А если перезагрузиться? Сколько времени проходит от ввода пароля до появления рабочего стола? Если больше 20сек, то увеличить задержку.


Оффлайн Valery_U

  • Автор темы
  • Новичок
  • *
  • Сообщений: 14
    • Просмотр профиля
Не знаю, кто это такие.
На "картинке" в приложении 1.pdf

А если перезагрузиться?
При перезагрузке срабатывает, при смене пользователя - нет...

Оффлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 6836
    • Просмотр профиля
Цитировать
На "картинке" в приложении
Понятно. То что с большой буквы - бесполезный фантик, потешить человеческое самолюбие, который только всех запутывает. Система нигде его не использует.
Цитировать
При перезагрузке срабатывает
Тогда получается, шаг был неверный. Автозапуск срабатывает при перезагрузке, но не при смене пользователя.
Искать другой путь. Например, вставить запуск скрипта в .bashrc. У меня пока идей нет.


Оффлайн Valery_U

  • Автор темы
  • Новичок
  • *
  • Сообщений: 14
    • Просмотр профиля
Спасибо,  "autostart" почищу... ;)
Буду читать и пробовать с  ".bashrc"...

Оффлайн Peter_I

  • Старожил
  • *
  • Сообщений: 3026
    • Просмотр профиля
andytux, а почему же тогда у меня при выходе и входе из системы desktop-файл каждый раз срабаывает?
Или вы о чём-то другом?
Пётр.

Оффлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 6836
    • Просмотр профиля
Цитировать
почему же тогда у меня при выходе и входе из системы desktop-файл каждый раз срабаывает?
Я тоже расчитывал , что будет срабатывать. Сам не проверял, но мне кажется логичным, что при смене пользователя должно загружаться все его окружение, как и при перезагрузке.

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Автозапуск срабатывает при перезагрузке, но не при смене пользователя.
при копировании его в /home/valery/.config/autostart/
Как бы намекает... ;) что "положить" нужно в /etc/xdg/autostart раз это для разных пользователей (в противном случае срабатывает только для того в чьем /home лежит)
Ну или если использовать "неумный" вариант в .config/autostart/ каждого пользователя свой конфиг


Пользователь добавил сообщение 19 Августа 2019, 10:26:51:
при смене пользователя
при выходе и входе
Разные вещи. Когда происходит именно "переключение" DE и прочие приложение остаются в активном состоянии, т.е. для системы пользователь по прежнему "рабочий". Линукс - многопользовательская система, в том числе позволяет работать нескольким пользователям "одновременно". Если надо чтоб при "переключении" происходили какие-то действия надо именно "выходить из одного и входить в другого" (ну или делать переключение вручную).
Или просто "привязать" каждого пользователя к определенному соединению при обоих ативных.
« Последнее редактирование: 19 Августа 2019, 10:26:51 от Azure »
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

 

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