LINUX.ORG.RU

cdrecord and cdrom's tray state (closed, opened)


0

0

Где в /proc или другим способом найти информацию о состоянии cdrom-а (открыт, закрыт)?

Было бы ещё лучше, чтобы cdrecord сам не начинал запись, пока я не вставлю диск и не нажму на кнопочку.

★★★★

Ответ на: комментарий от jackill

> 1 только в смонтированном случае.

Всегда. При смонтированном, отмонтированном, открытом, закрытом.

> Выставь 0 и он разлочится.

Permission denied

anonymous
()

Боюсь, что никак..
Зато можно приводить cd-rom в гарантированно закрытое/открытое состояние командой eject.
А еще можно например пытаться закрыть (чтобы проверить закрыт ли он) и если он действительно закроется, то сказать "опа, а он оказывается был открыт", то тут же открыть или наоборот :-)

unDEFER ★★★★★
()
Ответ на: комментарий от unDEFER

> А еще можно например пытаться закрыть (чтобы проверить закрыт ли он)
и если он действительно закроется, то сказать "опа, а он оказывается
был открыт", и тут же открыть или наоборот :-)

На самом деле такой способ очень даже годиться, если хочется закрывать
cd-rom, когда он открыт, и открывать, когда закрыт.
Я, например, пользуюсь таким скриптом:

---
$ cat /usr/local/bin/EJECT
#!/bin/bash
TIME=`/usr/bin/time -f %e eject $1 2>&1 | tr -d .`
if (( $[ $TIME < 20 ] )) ; then
	eject -t $1
fi
---

вызовы 'EJECT /dev/cdrom' и 'EJECT /dev/cdrom1' забиндены на 
соответственно клавиши Alt+E, Alt+W :-)

unDEFER ★★★★★
()
Ответ на: комментарий от unDEFER

Кстати, да. time eject /dev/hdd выдаёт разные результаты при закрытом/открытом сидироме :) Спасибо за идею!

Selecter ★★★★
() автор топика
Ответ на: комментарий от Selecter

Иногда только пробемы возникают:
./do_backup.sh: line 17: 088: value too great for base (error token is "088")

if (( $[ $TIME > 20 ] )) ; then

Selecter ★★★★
() автор топика
Ответ на: комментарий от Selecter

#!/usr/bin/perl
use Fcntl;

sysopen(CD,'/dev/hdc',O_RDONLY | O_NONBLOCK);
$retval1 = ioctl(CD, 0x5326, 0); # CDROM_DRIVE_STATUS
close (CD);
print "$retval1";

#----------------------------
2 - tray open
4 - Ready

Правда пока CD не смонтирован tray всегда open :-(

anonymous
()
Ответ на: комментарий от Selecter

> Иногда только пробемы возникают:
> ./do_backup.sh: line 17: 088: value too great for base (error token is "088")
>
> if (( $[ $TIME > 20 ] )) ; then

Хм.. Ни разу такого не видел. Что-то вы наверно не так делаете..

anonymous
()
Ответ на: комментарий от anonymous

> anonymous (*) (24.01.2005 19:45:28)
Хм.. вроде не выходил.. :-/
Ничего не понимаю
---
unDEFER

unDEFER ★★★★★
()
Ответ на: комментарий от anonymous

Всё так. Просто получается так, что проходит меньше секунды, . удаляется, а 0 впереди bash воспринимает, как показатель того, что число это восьмиричное.

Selecter ★★★★
() автор топика
Ответ на: комментарий от Selecter

Хотя впрочем ясно - исправьте "$TIME" на "${TIME##*0}" Вообще не очень, конечно, хорошая идея просто убирать точку и сравнивать значение как целочисленное. Надо воспользоваться, например, bc, тогда всё точно хорошо будет ;-)

unDEFER ★★★★★
()
Ответ на: комментарий от Selecter

STORAGE="/mnt/hda2"
STORAGE_M="/root"
CDRW="/dev/hdd"
EXCLUDE="--exclude=/dev --exclude=/distro --exclude=/media --exclude=/mnt --exclude=/proc --exclude=/srv --exclude=/sys --exclude=/tmp --exclude=/tools --exclude=/var/cache/apt/archives"

echo "Starting archiving..."
echo "Please enter your password (sudo)"
sudo tar -czpf $STORAGE_M/backup.tar.gz / $EXCLUDE --exclude=$STORAGE_M
echo "Testing archive..."
sudo gzip --test $STORAGE_M/backup.tar.gz
echo "Splitting archive..."
sudo split -d -b 700m $STORAGE_M/backup.tar.gz $STORAGE/backup.tar.gz_
echo "Deleting unnecessary files..."
sudo rm $STORAGE_M/backup.tar.gz 

eject $CDRW
echo "Please insert CDRW media for burning backup files..."

for SLICE in `ls $STORAGE/backup.tar.gz_*`
do
	while true
	do
	TIME=`/usr/bin/time -f %e eject $CDRW 2>&1 | tr -d .`
	#if (( $[ $TIME > 20 ] )) ; then
	if (( `echo "$TIME > 0.5" | bc` )) ; then
		#echo $TIME
		echo "Starting blanking && burning..."
		#echo $SLICE
		cdrecord -blank=fast dev=ATA:1,1,0
		mkisofs -r $SLICE | cdrecord -v dev=ATA:1,1,0 -
		eject $CDRW
		echo "Please insert another CDRW media for burning backup files..."
		break
	fi
	sleep 5
	done
done

Selecter ★★★★
() автор топика
Ответ на: комментарий от Selecter

> TIME=`/usr/bin/time -f %e eject $CDRW 2>&1 | tr -d .`
> if (( `echo "$TIME > 0.5" | bc` )) ; then

" | tr -d ." забыли стереть
А в чём кстати идея? Может лучше всё же засекать выполнение 'eject -t' и сравнивать на меньше, а не больше?

unDEFER ★★★★★
()
Ответ на: комментарий от Selecter

Блин

- TIME=`/usr/bin/time -f %e eject $CDRW 2>&1 | tr -d .` + TIME=`/usr/bin/time -f %e eject $CDRW 2>&1`

Selecter ★★★★
() автор топика
Ответ на: комментарий от unDEFER

Идея в автоматическом бакапе. Просто надоело делать всё это из раза в раз - решил скрипт написать простенький. Теперь достаточно запустить скрипт и менять диски.

Не понял насчёт 'eject -t', чем лучше?

Selecter ★★★★
() автор топика
Ответ на: комментарий от Selecter

> Идея в автоматическом бакапе. Просто надоело делать всё
> это из раза в раз - решил скрипт написать простенький.
> Теперь достаточно запустить скрипт и менять диски.

Ну, да это понятно :-)

> Не понял насчёт 'eject -t', чем лучше?

Ну, сейчас как я понимаю он вначале вынимает диск, а затем если вы его засуните (в смысле закроете tray) то снова тут же вынимает.. не рационально как-то получается, плюс если ещё cdrecord перед записью или после стирания tray будет вынимать/вставлять, то совсем хлопанья tray'а должны замучать :-0

unDEFER ★★★★★
()
Ответ на: комментарий от unDEFER

Перед записью и после стирания cdrecord не трогает tray. Опция -eject не указана. А вот первое верно подметил.

Selecter ★★★★
() автор топика
Ответ на: комментарий от unDEFER

А да, теперь я понял почему всё же eject :-)
Иначе он захлопнет tray и во-второй раз подумает, что вы уже вставили диск..
С другой стороны можно в else поставить eject - тогда, если вы забудете про него, он будет начинать хлопать tray'ем тем самым привлекая внимание ;-) Тогда ещё sleep не забудьте перенести в начало цикла for.

unDEFER ★★★★★
()
Ответ на: комментарий от unDEFER

Это можно оставить в подарок своему другу - начинающему линуксоиду, чтобы повеселиться :)

Selecter ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.