GNU/Linux >> Linux の 問題 >  >> Ubuntu

Cdドロワーが開いているか閉じているかを検出するコマンド?

CDトレイが開いているか閉じているかを検出し、それが開いているかどうか(または解釈しやすいもの)に応じて1または0を返すシェルスクリプトで実行できるコマンドはありますか?

現在、openコマンドを実行しており、実行にかかる時間を計っています。ほぼ瞬時であれば、開いています。時間がかかる場合は、開いていて、現在は閉じています。

現在の状態を変更せず、検出するだけの方法が欲しいのですが。

承認された回答:

私はここで素敵な小さな解決策を見つけました。以下のCコードは、リンクされたサイトから最小限の変更で、の終了コードを返します。 トレイが開いていて1の場合 そうでない場合。

したがって、このコードを何かとして保存します(例:foo.c )そして次のコマンドでコンパイルします:

gcc -o trayopen foo.c

次に、コンパイルされた実行可能ファイルtrayopenをコピーします /usr/binへ :

sudo cp trayopen /usr/bin

のようなことはできないはずです
trayopen /dev/sr0 && echo closed

または、より完全なもの:

#!/bin/sh
if trayopen /dev/sr0
then
    echo "Tray is open."
else
    echo "Tray is closed."
fi

コード:

#include <stdio.h>
#include <stdlib.h>
#include <sys/ioctl.h>
#include <fcntl.h>
#include <linux/cdrom.h>

int main(int argc,char **argv) {
  int cdrom;
  int status=1;

  if (! argv[1] ){
    printf("Usage : trayopen [device]\n");
    printf("Result: Returns a 0 if the tray was open and 1 if it was closed\n");
    exit(2);
  }

  if ((cdrom = open(argv[1],O_RDONLY | O_NONBLOCK)) < 0) {
    printf("Unable to open device %s. Provide a device name (/dev/sr0, /dev/cdrom) as a parameter.\n",argv[1]);
    exit(2);
  }
  /* Check CD tray status */
  if (ioctl(cdrom,CDROM_DRIVE_STATUS) == CDS_TRAY_OPEN) {
    status=0;
  }

  close(cdrom);
  exit(status);
}

Ubuntu
  1. ターミナルに出没する8つの不気味なコマンド

  2. オープンソースとの現在の状態を確認する方法。クローズドソースグラフィックスドライバー?

  3. Ubuntu のツリー コマンドとは何ですか?

  1. Linuxでsudoコマンドを使用する方法

  2. Mac OS X の open コマンドに相当する Linux

  3. コマンドの結果として指定されたファイルを vim で開く

  1. vmstatコマンドの使用方法

  2. pwdLinuxコマンド

  3. nslookupコマンドの使用方法