您可以使用该命令获取有关任何块设备的信息blkid
。
[root@arch32-vm ~]# blkid /dev/sr0
/dev/sr0: UUID="2013-05-31-23-04-19-00" LABEL="ARCH_201306" TYPE="iso9660" PTTYPE="dos"
[root@arch32-vm ~]# echo $?
0
Run Code Online (Sandbox Code Playgroud)
如果我移除磁盘,我不会得到任何输出并且退出值为 2。(0 表示成功。非零值通常表示发生异常或发生错误)
[root@arch32-vm ~]# blkid /dev/sr0
[root@arch32-vm ~]# echo $?
2
Run Code Online (Sandbox Code Playgroud)
setcd -i
(在setcd
软件包中,至少在 Debian 上)可以告诉您驱动器的状态。与其他一些方法不同(至少安装,也可能是 blkid),这不会尝试关闭托盘,即使在能够关闭托盘的驱动器上也是如此。(如果它试图在您放入光盘时关闭您,这真的很烦人)。
打开托盘:
$ setcd -i /dev/sr0 /dev/sr0: CD 托盘已打开
关闭托盘后:
$ setcd -i /dev/sr0 /dev/sr0: 驱动器未就绪
准备好后:
$ setcd -i /dev/sr0 /dev/sr0: 在驱动器中找到的光盘:数据光盘类型 1 卷名:«名称» 出版商:MKISOFS ISO 9660/HFS FILESYSTEM BUILDER & CDRECORD CD-R/DVD CREATOR (C) 1993 E.YOUNGDALE (C) 1997 J.PEARSON/J.SCHILLING 2005030913034700?20050309000000340000003 数据准备者:MKISOFS ISO 9660/HFS FILESYSTEM BUILDER & CDRECORD CD-R/DVD CREATOR (C) 1993 E.YOUNGDALE (C) 1997 J.PEARSON/J.SCHILLING 2005030913034700?2005030000000005030000001
关闭,但没有光盘:
$ setcd -i /dev/sr0 /dev/sr0: 没有插入光盘
你可以很容易地编写脚本:
$ setcd -i /dev/sr0 /dev/sr0: CD tray is open
小智 5
您可以使用 Python3 和标准库执行以下操作:
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)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
47287 次 |
最近记录: |