LINUX.ORG.RU

Помогите пожалуйста с запуском интерфейса через udev

 


0

1

Здравствуйте Решил составить скрипт по запуску 2 наборов команд , при последовательном обнаружении системой 2-х устройств сетевого интерфеса. (одно запускается при загрузке системы, второе спустя произвольно) Создал скрипты по созданым правилам ( прописал в etc/udev/rules.d/my.rules)

правила вида

KERNEL==«wlp4z0», RUN+=«/home/polzovatel/scripts/my_script1»

KERNEL==«wlf93vbw0», RUN+=«/home/polzovatel/scripts/my_script2»

Но автоматом ничего не запускается!!! Только если кликнуть допустим по одному файлу my_script1, причем срабатывает в итоге за компанию и my_script2 …и только из под терминала! и почему-то только после введения пароля пользователя! (скрипты сделал исполняемыми!)

Что не так? Подскажите пожалуйста (почему все автоматом не дейcтвует по правилам?)

Ну первые три байта в твоем скрипте я могу угадать: «#!/». А вот дальше весьма туманно. Может покажешь.

только из под терминала! и почему-то только после введения пароля пользователя!

Чтобы всякие злые шаманы не обратили их на свою сторону.

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

sudo ip link set dev ИНТЕРФЕЙС down

sudo macchanger –mac=XX:XX:XX:XX:XX:XX интерфейс

sudo ip link set dev ИНТЕРФЕЙС up

Но суть ведь не скрипте! Яж пишу что они запускаются (правда кликом)

Их почему-то не запускают правила!

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

Но суть ведь не скрипте! Яж пишу что они запускаются (правда кликом)

Их почему-то не запускают правила!

Если ты всё знаешь, зачем тогда пришёл за помощью?

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

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

Хакер-недоросток, возомнивший себя богом, не знающий элемнтарной компьютерной грамматики.

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

простите, …тут в интерфейсе не видится ни цитирования ни выделения.

#!/bin/bash sudo ip link set dev ИНТЕРФЕЙС down sudo macchanger –mac=XX:XX:XX:XX:XX:XX интерфейс sudo ip link set dev ИНТЕРФЕЙС up

(p.s. для andytux __ если нет желания помочь,…это не повод оскорблять! Я у вам ничего не сделал. Удивительно , что приходится ВАМ объяснять, что мак меняют не только хакеры и для хакерства)

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

простите, …тут в интерфейсе не видится ни цитирования ни выделения.

#!/bin/bash

sudo ip link set dev ИНТЕРФЕЙС down

sudo macchanger –mac=XX:XX:XX:XX:XX:XX интерфейс

sudo ip link set dev ИНТЕРФЕЙС up

(p.s. для andytux __ если нет желания помочь,…это не повод оскорблять! Я у вам ничего не сделал. Удивительно , что приходится ВАМ объяснять, что мак меняют не только хакеры и для хакерства)

lubuk21 ()

Не используй сразу сложные скрипты. Сделай простейшее - запись «1» в файл, убедись что правило срабатывает, потом добавляй в скрипт по одной строке, например 'sudo ip link set dev ИНТЕРФЕЙС down', оп, не работает, проверяешь в терминале, спрашивает пароль, думаешь, а когда из скрипта выполняется, кто будет пароль вводить и т.д. Маленькими шагами, всегда новые функции добавлять только в работающее.

ilovewindows ★★★★★ ()
Последнее исправление: ilovewindows (всего исправлений: 1 )
Ответ на: комментарий от lubuk21

минутка вашего внимания

когда пишешь сообщение есть кнопка «Предпросмотр» и мелким шрифтом две ссылки

Внимание: прочитайте описание разметки Markdown или LORCODE.

а обижаться не надо – это LOR, понимать надо (или не заходи сюда). тот регистрант обычно очень сдержан, но никто не обязан всегда держать себя в рамках

anonymous ()
Ответ на: комментарий от ilovewindows

Спасибо за наводку, я про это не подумал.

(" …Сделай простейшие запись «1» файл… ") - можно чуть детальнее- про «1 файл»

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

В скрипте пишешь echo '1'>/home/user/a.txt, записывается строка '1' в файл, в качестве отладки, можешь пользователя вывести, понять сколько раз вызывается и т.д.

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

Про разметку уже сказали. Кнопок тут нет, разметка набирается текстом.

Про скрипт. Так, шебанг есть, уже хорошо. Проверь права (chmod +x).

Во-первых: убери sudo. Правила udev запускаются из-под рута.

Во-вторых: в правиле udev, добавь условие ACTION=="add", чтобы правило не срабатывало по много раз.

В-третьих: правила udev сортируются по имени файла и исполняются в этом порядке. Рекомендуется в начало имени файла добавлять двузначное число через дефис, например /etc/udev/rules.d/99-my-rules.rules. Это правило исполнится в последнюю очередь (т. е. его результаты гарантированно заменят собой любые другие конфликтующие результаты).

В-четвёртых: уже сказали, сначала отладь саму возможность исполнения скриптов. То есть напиши тестовый скрипт, который не делает ничего полезного, но оставляет где-то «след» своего выполнения. Например, записывает в файл единичку. Так ты поймёшь, что скрипт вообще выполнился. И постепенно доращивай его до полноценного.

intelfx ★★★★★ ()
Последнее исправление: intelfx (всего исправлений: 1 )
Ответ на: комментарий от intelfx

Огромное спасибо intelfx, ilovewindows, mord0d за помощь! Однако, наладить не удалось.

Сделал следующее:

1-е. в /etc/udev/rules.d/ создал два файла с названием 01-wifi.rules и 02-wifi.rules

2-е. в них соответственно нумерации прописал редактором nano правила вида:

KERNEL==«wlp4z0», RUN+=«/home/polzovatel/scripts/wr44q1», ACTION==«add»

KERNEL==«wlf93vbw0», RUN+=«/home/polzovatel/scripts/wr44q2», ACTION==«add»

3-е. в папке /home/polzovatel/scripts/ создал два файла с названием wr44q1 и wr44q2 и прописал в них согласно нумерации :

#!/bin/bash

echo '1'>/home/polzovatel/a.txt

и

#!/bin/bash

echo '2'>/home/polzovatel/b.txt

4-е. После чего в терминале каждому прописал выполнение:

$ chmod +x /home/polzovatel/scripts/wr44q1

$ chmod +x /home/polzovatel/scripts/wr44q2

5-е. Перезагрузил компьютер.

Результат-ноль. Файл не создается и ни единички , ни двойки нет по указанному адресу!

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

два файла с названием 01-wifi.rules и 02-wifi.rules

а тебе советовали 99-…rules. твои правила выполняются первыми, возможно даже при запуске системы: твой /home/polzovatel/scripts/* может не существовать на этом этапе. другими словами выполнять нечего.

посмотри в dmesg когда ядро видит интерфейсы, а когда монтирует корень и хомяк.

если это usb-свистки попробуй вставить их после загрузки системы

anonymous ()
Ответ на: комментарий от Dog

Dog Просто на текущий способ я уже просто кучу времени положил. Не хочется метаться, вдруг дело в пустяке. Насчет NM ,... про него слышал(но мне не известно- сохраняет ли он настройки после перезагруза)

anonymous Мне советовали поставить числовое значение! Указав что 99 правило будет гарантировано последним! Я прикинул так, что возможно еще придется компьютером пользоваться и возможно еще создавать правила,...а папка с правилами пуста! Я и начал логично с 01 .

Впрочем, переименовал на 98-... и 99-...,эффекта нет.

если это usb-свистки попробуй вставить их после загрузки системы

С основным модулем хотелось бы разобраться (но включил usb как вы сказали после загруза спустя минут 10ть -эффекта нет)

P.S.

посмотри в dmesg когда ядро видит интерфейсы, а когда монтирует корень и хомяк.

Заглянул в тот талмуд талмудов,... что там мог увидеть пользователь с моим уровнем?! (риторический вопрос)

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

Сохраняет. Написать как делать? Вообще, твой способ конечно, интересный, но можно проще. Тот же скрипт, делайщий сначала down потом меняющий адрес и потом up, можно просто добавить в .bashrc (.zshrc etc), или вообще инитом его на более раннем этапе выполнять. Но проще всего NM.

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

папка с правилами пуста! Я и начал логично с 01 .

Да. Моё предположение про нумерацию правил предполагало, что есть другие правила и они касаются этих интерфейсов. Но причина не в этом.

С основным модулем хотелось бы разобраться (но включил usb как вы сказали после загруза спустя минут 10ть -эффекта нет)

USB удобней для отладки правила. Его можно включать/отключать без перезагрузки компьютера. Изменил правило, «переключил» устройство USB, увидел результат.

Пока что, могу предположить, что в твоем описании правил какая-то неточность. Тут может помочь именно устройство USB. Перед его подключением надо открыть терминал, запустить udevadm monitor. Подключить устройство USB, подождать 1-2 минуты и сохранить вывод udevadm. Это зависит от используемого эмулятора терминала: одни позволяют сохранять из контекстного меню, в других приходиться самостоятельно выделять-копировать-сохранять. Скорее всего вывод будет достаточно объёмный. Далее сам гуглишь или выкладываешь файл на сервисе пастебин/файлообменнике без регистраций и смс. Ссылку публикуешь в своём сообщении (активней осваивай разметку) – для ознакомления тех кто в тред заглянет.

dmesg на самом деле базовая и простая штука. Очень удобная (когда понимаешь). Научиться понимать просто. Но да, надо пробовать.

journalctl тоже хорош, но его надо немного знать, чтобы пользоваться: прочитать его help, man journalctl или в интернете статейки. Ну и попрактиковаться.

Справка

journalctl есть только если есть systemd. В реальности* почти все пользователи linux сидят на чём-то популярном с systemd внутри. На ЛОРе есть значительный процент линуксоидов не пользующихся дистрибутивами с systemd.

пользователь с моим уровнем

Тогда ключевой вопрос звучит так: «Вам шашечки или ехать?». Ты можешь и дальше постигать udev и его правила. Думаю после более глубокого погружения в правила udev результат будет положительным. А можешь использовать NetworkManager и получить результат более простым способом и возможно быстрее.

За каст @anonymous спасибо! Я расцениваю это как вежливость и уважение с твоей стороны. Но… под этим ником может оставлять сообщения любой желающий без регистрации/авторизации на ЛОРе. Для пользователей каст оставляет сообщение в профиле. Каст анонимуса с технической точки зрения ничего не делает.

По какому источнику осваиваешь правила udev?

anonymous ()
Ответ на: комментарий от lubuk21

папка с правилами пуста!

Которая? Это не значит, что нет другой папки, например /lib/udev/rules.d, в новых версиях может быть /usr/lib/udev/rules.d.

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

Заглянул в тот талмуд талмудов

Так просто туда глядеть сложно. Нужно с поиском. Сначала ищете по именам интересующих вас интерфейсов, запоминаете время их появления. Потом ищите по ″mounted filesystem″ и смотрите когда там фигурирует устройство (допустим sda1) где находится ваш /home.

Ну, и, вроде сейчас правила udev могут быть в файле с initramfs, и они живут отдельно от тех, что в /etc/ и они работают при начальной загрузке системы... wlp4z0 — это вншний usb свисток или внутри корпуса?

mky ★★★★★ ()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.