GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara mendeteksi apakah ada CD-ROM di drive?

Anda dapat memperoleh informasi tentang perangkat blok apa pun menggunakan perintah blkid .

[[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

Jika saya menghapus disk, saya tidak mendapatkan output apa pun dan nilai keluar adalah 2. (0 berarti sukses. Nilai bukan nol biasanya berarti terjadi sesuatu yang tidak normal atau terjadi kesalahan)

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

setcd -i (dalam setcd paket, setidaknya di Debian) dapat memberi tahu Anda status drive. Tidak seperti beberapa pendekatan lain (mount setidaknya, mungkin blkid juga), ini tidak coba tutup baki , bahkan pada drive yang mampu melakukan itu. (Yang benar-benar menjengkelkan jika mencoba menutup Anda saat Anda memasukkan disk).

Dengan baki terbuka:

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

Tepat setelah menutup baki:

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

Setelah siap:

$ 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

Tertutup, tetapi tidak ada disk:

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

Anda dapat dengan mudah membuat skripnya:

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

Anda dapat melakukan hal berikut dengan Python3 dan pustaka standar:

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. Cara membuat kata sandi acak di linux menggunakan /dev/random

  2. Bagaimana Linux Menangani Beberapa Pemisah Jalur Berturut-turut (/home////username///file)?

  3. Linux – Apa Arti Huruf 'u' Di /dev/urandom?

  1. Cara memetakan perangkat /dev/sdX dan /dev/mapper/mpathY dari perangkat /dev/dm-Z

  2. Bagaimana cara menyandikan base64 /dev/random atau /dev/urandom?

  3. Linux:Perbedaan antara /dev/console , /dev/tty dan /dev/tty0

  1. Bagaimana cara mengganti harddisk yang gagal di RAID perangkat lunak Linux

  2. kernel:menonaktifkan /dev/kmem dan /dev/mem

  3. Bagaimana Linux menggunakan /dev/tty dan /dev/tty0