The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"freebsd + beeper + sh скрипт"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Shell скрипты)
Изначальное сообщение [ Отслеживать ]

"freebsd + beeper + sh скрипт"  +/
Сообщение от quadroarte (ok) on 20-Июл-10, 00:12 
задача.
Есть сервер freebsd, когда я вставляю флешку, что бы запускался скрипт, который выполнял команду
"появилась флешка, нужно просигналить в ПС Спикеры"

Знаю, что возможно наверное реализовать с помощью cron,
но я видел как это реализованно иначе...

Куда капать?

Высказать мнение | Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "freebsd + beeper + sh скрипт"  +/
Сообщение от quadroarte (ok) on 20-Июл-10, 13:31 
Есть скрипт для крона рабочий. Когда флешка вставленна, он ее монтирует.
Если его запустить и пока не появится флешка, должен ее примонтировать, но эта часть скипта не работает, где ошибка не подскажете?
Спасибо


#!/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 1

while [ ! -e $devfull ];
do
sleep 1
done

# Монтируем, наконец, Flash. Включаем поддержку длинных имен и указываем
# как перекодировать имена файлов на русском языке
mount_msdosfs -l -L ru_RU.KOI8-R -D CP866 $devfull $mpoint

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

2. "freebsd + beeper + sh скрипт"  +/
Сообщение от quadroarte (ok) on 20-Июл-10, 18:00 
Можно тему закрывать.
Разобрался во всем, кроме этого скрипта

devd -- решает все мои поставленные задачи = )

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

3. "freebsd + beeper + sh скрипт"  +/
Сообщение от universite email(ok) on 27-Июл-10, 22:53 
>Можно тему закрывать.
>Разобрался во всем, кроме этого скрипта
>
>devd -- решает все мои поставленные задачи = )

нет, уж
напишите как сделали и нажмите ссылку "Рекомендовать для помещения в FAQ"

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

4. "freebsd + beeper + sh скрипт"  +/
Сообщение от quadroarte (ok) on 03-Авг-10, 21:45 
>>Можно тему закрывать.
>>Разобрался во всем, кроме этого скрипта
>>
>>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

Работает как часы.

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру