Как отладить правило udev (в/etc/udev/rules.d / …)

ssh-добавьте попытки добавить ключ к агенту, но в Вашей системе не работает никакой ssh-агент.

ssh имеет два различных режима работы с ключами. Или ssh соединяется с агентом и просит, чтобы агент прошел проверку подлинности, или ssh читает ключ из диска.

Как нет никакого агента, работающего на Вашей системе, которую первый режим приводит к сбою, но вторые работы, потому что нет никакого включенного агента.

Можно временно запустить агент ssh-agent bash. Впоследствии ssh-add должен работать без проблем.

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

Если Вы подключены к удаленному хосту ssh. Затем Вы могли бы хотеть передать свой локальный агент удаленному хосту. Использовать ssh -A если, именно это Вы хотите.

15
04.05.2015, 03:29
5 ответов
  • 10- как указано jasonwryan, используйте большую нумерацию (90-е хорошо). Таким образом, ваше правило не будет отменено другим.
  • Используйте минимум ключей именно столько, сколько вам действительно нужно. Пример, ! = & GOTO / LABEL , вместо этого используйте напрямую ==

     ACTION == "add", KERNEL == "sdb * ", RUN + =" / usr / bin / mount / dev / sdb1 / media "
     
  • Ваша цель была sdb1 с фиксированной командой, минимизировать слепое совпадение с помощью KERNEL == "sdb1"

  • Я считаю полезным создать правило отладки теней, я назвал тень, потому что я всегда оставляю его в том же файле, поэтому я использую его, когда мне это нужно.

     ACTION == "добавить", KERNEL == "sdb *", RUN + = "/ bin / sh -c 'echo == >> /home/user/Desktop/udev-env.txt; env >> / home / user / Desktop / udev-env.txt '"
     # ACTION ==" add ", KERNEL ==" sdb * ", RUN + =" / usr / bin / mount / dev / sdb1 / media " 
     

    Примечание: udev-env.txt создается, тогда правило срабатывает в любом случае. Строка == , соответствующая одному совпадающему узлу. ENV, записанный в этом файле, может быть смесью двух или более узлов, созданных почти одновременно, это проблема буферизации stdout .

  • Используйте udevadm monitor -u , udevadm test ... и триггер udevadm ... , чтобы проверить, какие правила обрабатывали события.

  • Внутри сценариев вы должны вести журнал отладки и перехватывать неудачные команды, сохраняя их возвращаемое значение также сообщения stdout и stderr .

Обновление:

  • Ссылка: udev_237 - man udev (Ubuntu_18.04)

    RUN {type}

     Обратите внимание, что запущенные программы, которые обращаются к сети или монтируют / размонтируют использование файловых систем 
    в правилах udev запрещено из-за использования изолированной программной среды по умолчанию для 
    systemd-udevd.service. 
     
11
27.01.2020, 19:50

Я думаю, что вы здесь ищете команду udevadm . Вы будете использовать параметры триггера и test , чтобы запустить повторное сканирование событий udev и протестировать конкретное событие, соответственно.

Я усвоил это на собственном горьком опыте, когда возился с новым именованием сетевых устройств в EL 7. Удачи!

1
27.01.2020, 19:50
  1. Create a udev rules file

    sudo nano /etc/udev/rules.d/99-removable-sd.rules
    
  2. Add rule that tells udisks to automount it

    SUBSYSTEM=="block", SUBSYSTEMS=="mmc", DRIVERS=="mmcblk", ATTRS{type}=="SD", ENV{UDISKS_AUTO}="1", ENV{UDISKS_SYSTEM}="0"
    

    ATTRS{type}=="SD" may be not required if you are using different types.

  3. Reload rules

    sudo udevadm control -R
    
  4. Eject it then put back.

Reference: Archlinux Wiki: Some devices, that should be treated as removable, are not

1
27.01.2020, 19:50

У меня была такая же проблема с RASPBERRY PI 3 B+, ​​возможно, приведенные выше команды могут вам помочь. Но мне это НЕ помогло. Я пытался вызвать скрипт при вставке USB-накопителя. Правила не регистрируются в системном журнале, поэтому становится очень сложно понять, какое правило сработало, а какое не удалось.

Итак, я сделал следующее:

(1 )Я создал файл правил в /etc/udev/rules.d/100 -myrule.rules

(2 )затем я выполнил командуsudo /etc/init.d/udev restart

Затем я проверил, все работает. Часть информации может быть полезной для вас, а может и не быть, но файловые системы доступны только для чтения для udev, пока не будет выполнена команда (2 ).

1
27.01.2020, 19:50

Эта команда позволит наблюдать за выполнением правил:

udevadm control --log-priority=debug
journalctl -f

udevadm control --log-priority=info, чтобы вернуть его к нормальному уровню)

6
05.09.2020, 00:21

Теги

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