Войти

Показать полную графическую версию : как из скрипта проверить подключена ли флешка


ejik_off
23-01-2014, 18:43
Всем привет!!!
Изучаю линукс и есть задачка:
Раздел 2. Создание сценариев
Простые задания
1. Содержимое домашнего каталога. Выполните рекурсивный обход домашнего
каталога и сохраните информацию в файл. Сожмите файл. Попросите пользователя
вставить флешку и нажать клавишу ENTER. Запишите сжатый файл на флешку.
Вот пока что удалось написать:
#!/bin/bash
ls -R ~ > listHomDir.txt | tar -czf LHD.tar.gz listHomDir
dialog --msgbox "Вставьте флешку и нажмите кнопку ENTER" 10 30
но вот как определить что флешку вставили? единственное что приходит в голову это проверить папку медиа, не появилась ли там новая папка. Но может есть еще какой то способ?

AMDBulldozer
23-01-2014, 19:13
ejik_off, во-первых, Ваш сценарий содержит ошибки.
Вы не должны использовать конвейер если не передаете ничего с stdout первой команды на stdin второй. Поэтому в приведенном примере вертикальную черту ("|") надо заменить точкой с запятой. Но это всё равно будет плохим вариантом, поскольку следующая команда "tar" вообще не нужна. tar - это команда создания архива. То есть сборки нескольких файлов в один. А у Вас нет нескольких файлов.
Поэтому правильный вариант Вашей команды "ls -R ~ > listHomDir.txt | tar -czf LHD.tar.gz listHomDir" должен выглядеть как-то так:
"ls -R ~ | gzip -9 > LHD.gz"
Теперь по поводу установки флешки. Есть несколько способов проверить её подключеиние.
Можно, например, либо прочитать файл /proc/partitions на предмет появления новых разделов, либо проанализировать последние строчки вывода dmesg.

ejik_off
24-01-2014, 06:25
viktor@ubuntu:~$ cat /proc/partitions
major minor #blocks name

11 0 1048575 sr0
8 0 20971520 sda
8 1 19921920 sda1
8 2 1 sda2
8 5 1046528 sda5
8 16 15695872 sdb
8 17 15694848 sdb1

две последние строки появляются когда флешка подключена. Но как переписать файл на флешку?

AMDBulldozer
24-01-2014, 13:56
Примерно так:
grep sdb1 /proc/partitions &>/dev/null
if [[ $? == 0 ]]; then
mount /dev/sdb1 /media/usbflash # или любая другая точка монтирования
[ $? == 0 ] && cp LHZ.gz /media/usbflash || echo Хрен там, не смонтировалась...
umount /media/usbflash
echo Это конец. Вытыкай флешку взад
else
echo 'Тебе, дураку, сказано было флешку воткнуть, а ты что сделал?!!'
fi
(это я написал от балды и не проверял)

ejik_off
24-01-2014, 17:37
Спасибо попробую.




© OSzone.net 2001-2012