Вот, ты снарядил свой модный старенький ноутбук довольно
старым, но проверенным дистрибутивом GNU/Linux.
Все неплохо, но надо иногда ,чтобы флешка подключалась
автоматически или компакт-диски, сервисы оповещали о
своей случайной кончине или менялся пароль на отбалдовый
каждый раз...
Ну, согласись, каждый раз это делать вручную - неудобно и, как говаривал мой старый приятель, - неэффективно!
А еще было бы неплохо просто набраться базовых знаний и примеров скриптов автоматизации.
Все начинается с маленьких шагов.
И маны, и доки, и инфы - все это, конечно, потом надо будет
как-минимум просмотреть, ну, ради уважения, хотя бы.
Я не пытаюсь изобрести велосипед, - я, просто, рассказываю, как он устроен. Техники.
Для работоспособности, рекоммендую писать скрипт под учетной записью root.Я пользуюсь sudo. Освой! Пригодится.
А сейчас начнем с простого...
Самое простое применение - дополнение файла .bashrc в домашней директории. Например, чтобы пути поиска бинарных файлов включали в себя, также, и sbin директории:
По-умолчанию, во многих дистрибутивах переменной PATH назначается /bin:/usr/bin:/usr/local/bin
Двоеточием разделены отдельные пути.
Теперь дополним переменную.
Чтобы ей воспользоваться, обратимся к ней - $PATH
Итак, ставим ":" и продолжаем своими путями:
set PATH=$PATH:/sbin:/usr/sbin:/usr/local/sbin
Ну, вот, вроде бы просто все...
Попробуем проконтролировать звук на запуске.
У некоторых дистрибутивов, например, как у моего, ползунок
PCM почему-то в самом начале работы на нуле каждый раз.
Вдаваться в подробности, что бы это могло значить - я
не стал - неэффективно!
Обладая пониманием, что автозапуск во многих старых дистрибутивах - это /etc/rc.local я добавляю туда:
aumix -v100 -w100 -c100
Согласись - несложно и в результате, красивая мелочь!
Зачем я это написал?
Дело все в том, что /etc/rc.local - это тоже, в своем смысле, скрипт.
Все комманды, которые ты напишешь в своем скрипте ты сможешь перенести туда и обратно!
Что касается монтирования флешек - о это просто песня!
Да! Ты можешь поставить программу! Программу, которая
будет монтировать флешки и размонтировать их...
Ты будешь ее искать, настраивать и терять время.
И, все-равно, проиграешь!
Это - неэффективно! И скрипты ты писать научишься не так быстро!
Давай окунемся в реальность.
Сунь флешку в usb порт.
Теперь прочитай последние сообщения ядра:
$ dmesg
$ sudo cat /var/log/messages
Немного многовато масла маслянного...
Читаем хвост - последние 40 строчек.
$ sudo cat /var/log/messages | tail -n 40
Вот, и натолкнулись на самое главное, чем оперируем - на пайп!
Пайп (вертикальная черта) - служит для указания интерпретатору, что
все выводимое на экран необходимо перенаправить другой команде или
устройству на обработку.
Теперь, давай прикинем!
Сунул ты флешку - журнал подрос в сообщениях.
Вынул - тоже самое.
А в сообщениях ты можешь найти, какое устройство подключили.
Вот, что вижу я, когда включаю USB-устройство:
scsi2 : SCSI emulation for USB Mass Storage devices usb-storage: device found at 4 usb-storage: waiting for device to settle before scanning drivers/usb/core/inode.c: creating file '004' usb 1-1: New USB device found, idVendor=067b, idProduct=2528 usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3 usb 1-1: Product: USB Flash Drive usb 1-1: Manufacturer: USB 2.0 usb 1-1: SerialNumber: 000709078CE6B4ABAB62 hub 1-0:1.0: state 7 ports 2 chg 0000 evt 0002 scsi 2:0:0:0: Direct-Access USB 2.0 USB Flash Drive 1.00 PQ: 0 ANSI: 2 sd 2:0:0:0: [sda] 7929856 512-byte hardware sectors (4060 MB) sd 2:0:0:0: [sda] Write Protect is off sd 2:0:0:0: [sda] Mode Sense: 03 00 00 00 sd 2:0:0:0: [sda] Assuming drive cache: write through sd 2:0:0:0: [sda] 7929856 512-byte hardware sectors (4060 MB) sd 2:0:0:0: [sda] Write Protect is off sd 2:0:0:0: [sda] Mode Sense: 03 00 00 00 sd 2:0:0:0: [sda] Assuming drive cache: write through sda: sda1 sd 2:0:0:0: [sda] Attached SCSI removable disk sd 2:0:0:0: Attached scsi generic sg0 type 0 usb-storage: device scan complete
О чем нам может это сказать?
О том, что подключенное устройство, привязано к виртуальному устройству sda (/dev/sda).
Определился тип устройства, его параметры (размер слайсов файловой системы, их количество, режим защиты от записи итд)
Хм. Конечно, можно каждый раз самому читать, что пишется в журнал при подключении, потом, основываясь на полученных данных, монтировать устройства, но - это неэффективно!
Пусть это делает скрипт.
Да! Полностью автоматизировать все не удастся (вдруг устройство будет связано с виртуальным устройством uba,
как, например это делает knoppix) пока, но это только пока!
Наши первые строчки в скрипте:
#!/bin/sh
Это строчка очень похожа на комментарий, но в отличие от
остальных оных, она в самом начале и содержит символ "восклицательный знак".
Это признак того, что все далее - полный путь к интерпретатору. Указан - sh. Стандартный шелл.
А мог быть и bash. Смотри сам, что тебе нужно.
У каждого интерпретатора свой "язык" и скрипты одного
могут, но не обязаны работать под руководством другого.
Теперь попробуем "проанализировать" сообщения журнала, когда usb-флеш диск вставлен.
$ sudo cat /var/log/messages
Для того, чтобы отфильтровать нужное нам,мы будем использовать команду grep.
Например, чтобы найти все строчки в данном файле, содержащие слово "Вася",
надо дать команду:
$ sudo cat /var/log/messages | grep Вася
А если ты не уверен, как пишут "Вася" (с большой или маленькой буквы), не отчаиваясь вводим:
$ sudo cat /var/log/messages | grep [Вв]ася
Слово "Вася" записано странным образом?
Это регулярное выражение.
Подробнее в манах, конечно. Но, при этом отфильтруются и "Вася" и "вася"