задача.
Есть сервер freebsd, когда я вставляю флешку, что бы запускался скрипт, который выполнял команду
"появилась флешка, нужно просигналить в ПС Спикеры"Знаю, что возможно наверное реализовать с помощью cron,
но я видел как это реализованно иначе...Куда капать?
Есть скрипт для крона рабочий. Когда флешка вставленна, он ее монтирует.
Если его запустить и пока не появится флешка, должен ее примонтировать, но эта часть скипта не работает, где ошибка не подскажете?
Спасибо
#!/bin/sh# Проверка задания точки монтирования. Если не задана, берется точка
# монтирования по умолчанию
if [ $# -lt 1 ]; then
mpoint="/mnt"
else
mpoint=$1
fi# Подождать 1 секунду, пока usbd выполнит необходимые действия
sleep 2# Подключение нового устройства всегда происходит на шину с максимальным номером
# Поэтому мы разбираем список, выдаваемый camcontrol devlist (по признаку ")")
# выбираем один символ из строки scbusX (шестой от начала строки), прибавляем
# пробел, составляем список и сортируем его по убыванию. Первый элемент списка
# будет шина, на которую подключилось устройство
umdevs=`camcontrol devlist | \
awk 'BEGIN {RS=")"} {print substr($0,index($0,"scbus") + 5, 1) + " "}' | \
sort -b -n -r`# Берем первый элемент списка и увеличиваем его на единицу
umdev=`echo $umdevs | awk '{print $1}'`
ummax=$(($umdev+1))# Если CAM еще не подключил устройство, пересканировать эту шину
camcontrol rescan $ummax 2> /dev/null# Если рескан шины завершился неуспешно, значит CAM уже подключил устройство
# и оно находится на шине с выбранным максимальным номером
if [ $? -ne 0 ]; then
ummax=$umdev
fi# Получаем еще раз список устройств и отбираем нужную шину
umdrive=`camcontrol devlist | grep -e "scbus$ummax"`# Определяем имя устройства. Ищем в выводе строку "(da" и выбираем подстроку
# cо второго символа (пропускаем скобку) в три символа:
# <Generic Flash Disk 7.77> at scbus3 target 0 lun 0 (da0,pass3)
umdevs=`echo $umdrive | awk '{print substr($0,index($0,"(da") + 1,3)}'`# Составляем полное имя устройства
devfull="/dev/"$umdevs"s1"# Проверяем наличие такого файла в /dev. DEVFS создает файлы устройств с
# некоторой задержкой, так что ждем до тех пор, пока он не появится
sleep 1while [ ! -e $devfull ];
do
sleep 1
done# Монтируем, наконец, Flash. Включаем поддержку длинных имен и указываем
# как перекодировать имена файлов на русском языке
mount_msdosfs -l -L ru_RU.KOI8-R -D CP866 $devfull $mpoint
Можно тему закрывать.
Разобрался во всем, кроме этого скриптаdevd -- решает все мои поставленные задачи = )
>Можно тему закрывать.
>Разобрался во всем, кроме этого скрипта
>
>devd -- решает все мои поставленные задачи = )нет, уж
напишите как сделали и нажмите ссылку "Рекомендовать для помещения в FAQ"
>>Можно тему закрывать.
>>Разобрался во всем, кроме этого скрипта
>>
>>devd -- решает все мои поставленные задачи = )
>
>нет, уж
>напишите как сделали и нажмите ссылку "Рекомендовать для помещения в FAQ"в /etc/devd.conf Добавить:
__________________________________________
attach 0 {
device-name «umass[0–9]";
action «sleep 3 && адрес к вашему скрипту»;
};
detach 0 {
device-name “umass0”;
action «umount -f /media/flash»;
};
___________________________________________________далее, скрипт, который работает с "beep"
cd /usr/ports/audio/beep && make install clean
echo speaker_load=\"YES\" >> /boot/loader.conf
в самом скрипте, нужно прописать сигналы:
beep -p 800 30Работает как часы.