2015-05-21 5 views
0

Итак, я хочу сделать правило udev, которое, когда я подключаю свой USB-ключ к своему компьютеру, правило монтирует мой USB-ключ, берет файл с моего компьютера, копирует его на мой USB-ключ, а затем отключает мой USB. Так что я сделал мое правило Udev подобным:Udev Правила и проблемы с скриптом

ACTION=="add" SUBSYSTEM=="BLOCK", ENV{ID_VENDOR_ID}=="0718", ENV{ID_MODEL_ID}=="0618", ENV{ID_SERIAL_SHORT}=="CB00524932077759", RUN+="/bin/mount /dev/sda1 /media/usb" 
ACTION=="add" SUBSYSTEM=="BLOCK", ENV{ID_VENDOR_ID}=="0718", ENV{ID_MODEL_ID}=="0618", ENV{ID_SERIAL_SHORT}=="CB00524932077759", RUN+="/bin/ScriptCopy" 

И я написал сценарий, в/бункере, называется ScriptCopy:

#!/bin/sh 

cp /root/average.db /media/usb/database/average.db 

ldconfig 

echo "Done!" 
exit 0 

Так первая часть моего правила Udev работает, он монтирует usb, но тогда мой скрипт не работает, я действительно не понимаю, почему. Может кто-нибудь объяснить это мне? Thx

редактировать 1: , когда я бегу мой сценарий в терминале, делая

./ScriptCopy 

это работает! поэтому у меня должна быть проблема в моем правиле udev.

Редактировать 2: Я узнал что-то действительно странное (по крайней мере, это я совсем не понимаю), мое правило работает, если я подключаю свой USB-ключ, когда я нахожусь в GUI (XFCE) на банане Пи. Но я работаю с ssh, поэтому я не открываю GUI. Я хочу сделать, чтобы запустить некоторые команды с помощью ssh, запустить мой скрипт python, а затем я беру данные с помощью своего USB-ключа один раз в два дня. Но когда я подключаю свой USB-накопитель, а банан-пи не входит в графический интерфейс (в то время как я запускал свой сценарий с другого компьютера с помощью ssh), он не переносит данные на мой USB-ключ. Я не знаю, было ли это понятно.

Редактировать 3: Хорошо У меня была ошибка пути в моем правиле UDEV, потому что на ssh я не был у одного и того же пользователя. Я закрываю тему.

+1

Почему вы заканчиваете свой скрипт с помощью инструкции 'done'? Насколько я знаю, это определяет конец цикла, которого у вас нет. Выйдите из сценария, используя 'exit 0'. «0» определяет успешное выполнение. Хотя это, вероятно, не решит вашу проблему. – ShellFish

+0

Да, ты прав! Мой плохой, но да, это не решает мою проблему. –

+1

нет сообщений об ошибках? Кроме того, вы можете использовать '#!/Bin/bash' наверху вместо этого? Чтобы увидеть режим отладки, используйте 'set -vx' перед командой' cp'. И вы создали свой 'database /' dir на вашем USB? Наконец, если вы создали скрипт где-нибудь рядом с MS Windows, выполните 'dos2unix ScriptCopy'. Удачи. – shellter

ответ

0

Я обнаружил, что у меня была ошибка пути в моем сценарии/udev.