GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie kann ich feststellen, ob sich eine CD-ROM im Laufwerk befindet?

Mit dem Befehl blkid erhalten Sie Informationen zu jedem Blockgerät .

[[email protected] ~]# blkid /dev/sr0
/dev/sr0: UUID="2013-05-31-23-04-19-00" LABEL="ARCH_201306" TYPE="iso9660" PTTYPE="dos"
[[email protected] ~]# echo $?
0

Wenn ich die Festplatte entferne, erhalte ich keine Ausgabe und der Exit-Wert ist 2. (0 bedeutet Erfolg. Ein Wert ungleich Null bedeutet normalerweise, dass etwas Ungewöhnliches passiert oder ein Fehler aufgetreten ist)

[[email protected] ~]# blkid /dev/sr0
[[email protected] ~]# echo $?
2

setcd -i (im setcd Paket, zumindest unter Debian) kann Ihnen den Zustand des Laufwerks mitteilen. Im Gegensatz zu einigen anderen Ansätzen (zumindest mounten, wahrscheinlich auch blkid) wird dies nicht versuchen, das Fach zu schließen , sogar auf Laufwerken, die dazu in der Lage sind. (Was wirklich ärgerlich ist, wenn es versucht, sich dir zu nähern, während du eine Disc einlegst).

Bei geöffnetem Fach:

$ setcd -i /dev/sr0
/dev/sr0:
  CD tray is open

Gleich nach dem Schließen des Fachs:

$ setcd -i /dev/sr0
/dev/sr0:
  Drive is not ready

Nachdem es fertig ist:

$ setcd -i /dev/sr0
/dev/sr0:
  Disc found in drive: data disc type 1
    Volume name: «name»
    Publisher:                                                                                                                                                                                                                                                                 MKISOFS ISO 9660/HFS FILESYSTEM BUILDER & CDRECORD CD-R/DVD CREATOR (C) 1993 E.YOUNGDALE (C) 1997 J.PEARSON/J.SCHILLING                                                                                                                        2005030913034700�2005030913034700�0000000000000000
    Data preparer:                                                                                                                                 MKISOFS ISO 9660/HFS FILESYSTEM BUILDER & CDRECORD CD-R/DVD CREATOR (C) 1993 E.YOUNGDALE (C) 1997 J.PEARSON/J.SCHILLING                                                                                                                        2005030913034700�2005030913034700�0000000000000000

Geschlossen, aber keine Disc:

$ setcd -i /dev/sr0
/dev/sr0:
  No disc is inserted

Sie können es ziemlich einfach skripten:

while true; do
    cdinfo=$(setcd -i "$dev")
    case "$cdinfo" in
        *'Disc found'*)
            break;
            ;;
        *'not ready'*)
            echo '(waiting for drive to be ready)' >&2;
            sleep 3;
            ;;
        *'is open'*)
            echo '(drive is open)' >&2;
            sleep 5;
            ;;
        *)
            printf 'Confused by setcd -i, bailing out:\n%s\n' "$cdinfo" &2
            exit 1
    esac
done

Mit Python3 und der Standardbibliothek können Sie Folgendes tun:

import fcntl
import os

CDROM_DRIVE = '/dev/sr0'

def detect_tray(CDROM_DRIVE):
    """detect_tray reads status of the CDROM_DRIVE.
    Statuses:
    1 = no disk in tray
    2 = tray open
    3 = reading tray
    4 = disk in tray
    """
    fd = os.open(CDROM_DRIVE, os.O_RDONLY | os.O_NONBLOCK)
    rv = fcntl.ioctl(fd, 0x5326)
    os.close(fd)
    print(rv)

Linux
  1. So ersetzen Sie eine ausgefallene Festplatte in einem Linux-Software-RAID

  2. So generieren Sie ein zufälliges Passwort unter Linux mit /dev/random

  3. Wie behandelt Linux mehrere aufeinanderfolgende Pfadtrennzeichen (/home////username///file)?

  4. Linux:Unterschied zwischen /dev/console , /dev/tty und /dev/tty0?

  5. Wie portabel sind /dev/stdin, /dev/stdout und /dev/stderr?

Wie man einen Cronjob komplett zum Schweigen bringt /dev/null/?

Linux – Was bedeutet der Buchstabe „u“ in /dev/urandom?

So ordnen Sie /dev/sdX- und /dev/mapper/mpathY-Geräte vom /dev/dm-Z-Gerät zu

Wie kann /dev/random oder /dev/urandom mit base64 codiert werden?

Wie kann ich die Anzahl und Größe von Linux-Ramdisks (/dev/ram0 - /dev/ram15) ändern?

Wie Linux /dev/tty und /dev/tty0 verwendet