На сервере безголового linux определите, является ли вставленный оптический диск аудиодиском

2

На сервере без головок Linux (последняя версия Fedora, если это представляет интерес), как я могу обнаружить, что вставленный оптический диск является аудио-диском, а не диском с данными или видео-DVD? Среда рабочего стола не установлена, и я бы предпочел не устанавливать ее.

Что я вижу, так это то, что монтирование не удается, но я полагаю, что это также может иметь место для поврежденного диска с данными:

[root@server ~]# mount /dev/sr0 /mnt/cdrom
mount: /dev/sr0 is write-protected, mounting read-only
mount: /dev/sr0: can't read superblock
[root@server ~]# echo $?
32

Какие-либо предложения?

Isaac
источник

Ответы:

2

Чтобы достичь этого, используйте cdparanoia инструмент командной строки. В Ubuntu Linux вы можете установить его через

sudo apt install cdparanoia

тогда беги

cdparanoia -Q

Где «-Q» означает «запрос». Если в приводе нет аудиодиска, вы получите

cdparanoia III release 10.2 (September 11, 2008)
004: Unable to read table of contents header
Unable to open disc.  Is there an audio CD in the drive?

В противном случае это выглядело бы как ...

Table of contents (audio tracks only): track        length             begin        copy pre ch
===========================================================
  1.     8315 [01:50.65]        0 [00:00.00]    no   no  2
  2.    12830 [02:51.05]     8315 [01:50.65]    no   no  2
  3.    15642 [03:28.42]    21145 [04:41.70]    no   no  2
  4.    16238 [03:36.38]    36787 [08:10.37]    no   no  2
Antani
источник
Если вы хотите использовать его в скрипте, перенаправьте stdout и stderr на /dev/nullи используйте возвращаемое значение - 0 (успех), если есть диск, или ненулевое значение (сбой) в противном случае.
Toby Speight
3

Как я могу определить, является ли вставленный оптический диск аудиодиском?

#!/bin/bash
checkforaudio=`gvfs-info -f cdda://sr0/ | grep "filesystem::type: cdda"`
if [ "$checkforaudio" == "  filesystem::type: cdda" ]; then
    vlc cdda:///dev/sr0
    else
        checkfordvd=`find /media/*/ -name "VIDEO_TS" | grep "VIDEO_TS"`
        if [ ${checkfordvd:(-8)} == "VIDEO_TS" ]; then
            vlc dvd:///dev/sr0
            else
            pcmanfm
        fi
fi
exit 0

Источник http://ubuntuforums.org/showthread.php?t=1911452

DavidPostill
источник
Я на самом деле знал источник, но у меня было ложное впечатление, что gvfs-info требует gnome, поскольку он является частью проекта gnome. Оказывается, gvfs-client (пакет, содержащий gvfs-info в fedora) устанавливается без остальной части gnome, так что ваш ответ, безусловно, отличный. Однако, в любом случае, мне понадобится cdparanoia в моем проекте (плюс он намного меньше), я приму другой ответ.
Isaac