Скрипт для слежки за содержимым USB-устройств и копирования его на ПК

Я всегда был беспокойным учеником, всегда хотел воспользоваться такими возможностями, как ... например, копирование семестровых экзаменов с USB-накопителя учителя или что-то в этом роде. Когда я учился в старшей школе (компьютерная специальность), я хотел запрограммировать "что-то", что могло бы делать следующее:

  1. Обнаружение подключения USB-устройства к классному компьютеру
  2. Скопируйте весь контент с этого устройства на свой компьютер

Это позволило бы мне сдать экзамен задолго до этого, учителю нужно было только подключить USB-накопитель (флешку) к компьютеру, и все.

К сожалению, в моем институте на компьютерах была Windows, и… я никогда не учился программировать под эту ОС.

Однако теперь я использую Linux (очевидно, нет? LOL!), и с учетом знаний, которые я смог приобрести за эти годы, теперь ДА! Я уже могу добиться этого с Linux 

Другими словами, я написал простой сценарий, который выполняет следующие действия:

1. Создайте папку /home/.USBDRIVES/
2. Каждые 5 секунд он проверяет, подключено ли к компьютеру какое-либо USB-устройство (или CD / DVD).
3. Если он подключен, он создаст папку внутри /home/.USBDRIVES/ с именем USB (например: память-2 ГБ), а также скопирует все файлы .doc, .pdf и т. д. (вот список) в эту только что созданную папку.
4. Если USB не подключен, он просто подождет 5 секунд, чтобы перезапустить проверку, которую я объяснил выше 

Вот сценарий и файл, содержащий форматы для копирования:

Загрузите USB-Spy.zip
Скрипт должен выполняться от имени пользователя root, чтобы его работа не была ограничена. Здесь я объясняю, как этого добиться

Чтобы скрипт мог работать без проблем, лучше всего запускать его с правами администратора (root), так как очевидно, что его нужно запускать рядом с компьютером, таким образом мы обеспечиваем, чтобы при перезагрузке компьютера или выключено, когда вы снова запустите скрипт, он будет работать, готовый извлечь то, что мы хотим, с любого USB 

Давайте откроем терминал ... однажды откроем ...

1. Предположим, у нас есть оба файла в / opt / (/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]. Этого будет достаточно для сохранения внесенных нами изменений.

И вуаля, этого будет достаточно, чтобы скрипт запустился с правами root при включении компьютера.

Важно убедиться, что файл USB-spy.files находится в том же каталоге, что и USB-spy.sh

Теперь... Я немного объясню внутреннюю работу скрипта, так как знаю, что здесь много любителей Bash 

Q: Как сценарий узнает, что подключено USB-устройство?
О: В файле / etc / mtab нашей системы находятся устройства или разделы, которые смонтированы в нашей системе. По строке 23 скрипта известно, подключен USB или нет (превращение кота в mtab и grep media)
В: Да, но Как скрипт узнает, возвращают ли нам cat и grep какие-либо данные или нет?
A: Через если, то, еще цикл который начинается со строки 24.
Q: Как заставить его копировать только файлы с нужными расширениями? (.doc, .pdf и т. д.)
A: Используя rsync с различными параметрами, это находится в строке 34. Проще говоря, с помощью rsync я копирую только файлы, соответствующие фильтру usb-spy.files, каждая строка является фильтром, так сказать. Я также передаю параметр --prune-empty-dirs в rsync, чтобы он не создавал для меня пустые каталоги.
Кстати кое-что важный. Если подключено USB-устройство на 8 ГБ (например), все работает правильно, но я заметил, что если подключено устройство с гораздо большей емкостью, например 500 ГБ или 1 ТБ, процесс поиска файлов .doc и т. Д. Для их копирования на компьютер занял время давно, поэтому я поставил лимит ГБ. То есть в строке 31 я заявляю, что если размер USB-устройства меньше 16 ГБ, тогда найдите файлы и скопируйте их, а если он больше 16 ГБ, ничего не делать. Если вы хотите увеличить эти 16 ГБ на 32 ГБ, просто увеличьте это число из строки 31

На самом деле объяснять особо нечего, сценарий очень прост для понимания 

Если у кого-то есть сомнения или вопросы, жалобы, идеи или предложения, пожалуйста, сообщите об этом, и я обещаю им всемерно помочь.

Ну, я думал поставить что-то вроде: «этот скрипт предназначен только для образовательных целей, не используйте с вредоносными файлами» …но… какого черта!, используйте это как хотите, пришло время нам, студентам, иметь какое-то преимущество перед учителями, которые нас угнетают 

привет

В сценарий еще можно внести множество улучшений, но, эй, я думаю, это хорошее начало, если кто-то чувствует мотивацию внести свой вклад в это «благородное» дело, это будет приятно 

Добавить в качестве предпочтительного источника