Винаги бях неспокоен студент, винаги исках да се възползвам от възможности като ... например, копиране на семестриалните изпити от USB паметта на учителя или нещо подобно. Когато бях в гимназията (специалност компютър), исках да програмирам „нещо“, което да направи следното:
- Открива, когато USB устройство е свързано към компютъра в класната стая
- Копирайте цялото съдържание от това устройство на вашия компютър
Това би ми позволило да направя изпита много по-рано, би било необходимо само учителят да свърже своята USB памет (pendrive) към компютъра и това е всичко.
За съжаление в моя институт компютрите имаха Windows и ... Никога и никога не се научих да програмирам за тази операционна система.
Сега обаче използвам Linux (очевидно не? LOL!) и със знанията, които успях да придобия през тези години, сега ДА! Вече мога да постигна това с Linux
Тоест, програмирах прост скрипт, който прави следното:
1. Създайте папката /home/.USBDRIVES/
2. Проверява се на всеки 5 секунди дали към компютъра има свързано USB устройство (или CD / DVD).
3. В случай че някой е свързан, той ще създаде папка вътре /home/.USBDRIVES/ с името на USB (например: памет-2gb), а също така ще копира всички файлове .doc, .pdf и т.н. (тук списъкът) към тази папка, която току-що създадохте.
4. В случай, че няма свързан USB, той просто ще изчака 5 секунди, за да рестартира проверката, която обясних по-горе
Ето скрипта и файла, който съдържа форматите за копиране:
За да може скриптът да работи без проблеми, най-добре е да бъде стартиран с администраторски права (root), тъй като е очевидно, че трябва да се стартира до компютъра, по този начин гарантираме, че ако компютърът се рестартира или изключено, когато стартирате скрипта отново, той ще работи, готов да извлече това, което искаме от всяко USB
Нека отворим терминал ... веднъж отворен ...
1. Да предположим, че имаме и двата файла /избирам/ (/opt/usb-spy.sh y /opt/usb-spy.files), трябва да му дадем привилегии за изпълнение:
sudo chmod +x /opt/usb-spy.sh
2. Отваряме файла /etc/rc.local :
sudo nano /etc/rc.local
3. В него пишем над последния ред (изход 0) следващият:
/opt/usb-spy.sh &
4. Сега натискаме [Ctrl] + [X], за да запазим и излезем от файла, натискаме [S] или [Y] (в зависимост от системния език) и след това [Enter]. Това ще бъде достатъчно, за да бъдат запазени направените от нас промени.
И voila, това ще бъде достатъчно, за да може скриптът да започне като root, когато включим компютъра.
Важно е да проверите дали файлът usb-spy.files е в същата директория като usb-spy.sh
Сега... Ще обясня малко за вътрешната работа на скрипта, тъй като знам, че тук има много любители на Bash
Q: Как скриптът знае, че е свързано USB устройство? О: Във файла / etc / mtab на нашата система са устройствата или дяловете, които са монтирани в нашата система. Чрез ред 23 от скрипта се знае дали има свързан USB или не (създаване на котка към mtab и grep медия)
В: Да, но Как скриптът знае дали котката и grep ни връщат някакви данни или не? A: Чрез a ако, тогава, цикъл else който започва на ред 24.
Q: Как да го накарам да копира само файлове с желани разширения? (.doc, .pdf и др.)
О: Използвайки rsync с различни параметри, това е на ред 34. Просто обяснено, с rsync копирам само файловете, които съответстват на филтъра usb-spy.files, всеки ред е филтър, така да се каже. Предавам и параметъра --prune-empty-dirs до rsync, за да не създава празни директории за мен.
Наистина няма много за обяснение, сценарият е наистина лесен за разбиране
Ако някой има някакво съмнение или въпрос, оплакване, идея или предложение, моля, кажете го и обещавам да му помогна с каквото мога.
Е, мислех да сложа нещо като: «този скрипт е само за образователни цели, не използвайте с вредни файлове» …но…какво, по дяволите!, използвайте го за каквото искате, време е ние учениците да имаме някакво предимство пред учителите, които ни потискат
поздрави