私はnode-detection
を使用して、USB
デバイスが接続されたときに通知するようにしていますが、どのポートに接続されているかを知る方法がわかりません。 sdb1、sdc1、などそれを行う簡単な方法はありますか?ノードに接続されているデバイスのUSBポートを取得する
3
A
答えて
1
は、私はそれはたぶん、ノード検出
ない最良の方法で作業していないと思うが、これは私の仕事:
var shell = require('shelljs');
var watch = require('node-watch');
var tmpUsb;
Array.prototype.contains = function(needle){
for (var i=0; i<this.length; i++)
if (this[i] == needle) return true;
return false;
}
Array.prototype.diff = function(compare) {
return this.filter(function(elem) {return !compare.contains(elem);})
}
getUsb = function() {
this.usbJson = JSON.parse(shell.exec('lsblk --json', {silent:true}).stdout);
var dev = this.usbJson.blockdevices;
var devices = [];
dev.forEach(function(entry) {
entry.children.forEach(function(e) {
devices.push(e.mountpoint);
});
});
return devices;
}
tmpUsb = getUsb();
watch('/dev/disk/by-id', { recursive: true }, function(evt, name) {
var curr = getUsb();
var add = curr.diff(tmpUsb);
var rem = tmpUsb.diff(curr);
if(add.length > 0) {
console.log("ADD > " + add);
}
if(rem.length > 0) {
console.log("REM > " + rem);
}
tmpUsb = curr;
});
あなたの出力が何であるか、あなたの質問に追加してください。どのようなコードを試しましたか....
2
resin.ioの優れた人々が作成したノード検出モジュールに加えて、drivelistモジュールを使用することができます。
drivelistモジュールには、マウントポイント(パス)情報を含む接続されたすべてのデバイスが一覧表示されます。この出力は、オペレーティングシステムによって多少異なります。詳細については、ドライブレストのドキュメントを確認してください。
ここでは、リムーバブルUSBドライブを挿入してマウントしたときの簡単な例を示し、マウントパスを取得します。
いくつかのテストから、USB検出モジュールは、デバイスが接続されたときにほぼ即座に起動しますが、デバイスのマウントには時間がかかります。だから、マウントポイントが存在するかどうかを確認するためにsetIntervalを使用しています。マウントポイントが見つかると、その間隔をクリアします。 USBを挿入し、それがマウントされる前に削除された場合
// load modules
var usbDetect = require('usb-detection');
const drivelist = require('drivelist');
var checkUSBintervalID;
// This is the listener function for the 'add' event
function addUSBhandler() {
console.log('added event listener for usb ADD');
// Start interval to check if the USB is mounted
checkUSBintervalID = setInterval(function() {
drivelist.list(function(error, drives) {
console.log('listening for USB mount...');
if (error) { throw error; }
// iterate through all drives
for(var d = 0; d < drives.length; d++) {
// if the drive is a removable usb
if(drives[d].system == false) {
// if this drive is mounted
if(drives[d].mountpoints.length > 0) {
console.log('found removable USB');
// the drive is mounted
// do stuff here
// the path is at drives[d].mountpoints[0].path
clearInterval(checkUSBintervalID);
}
}
}
});
}, 1000);
}
// Add listener for when a USB is plugged in
usbDetect.on('add', addUSBhandler);
この回答は考慮されていません。おそらく、タイムアウトなどを追加する必要があります。これを助け、幸運を祈った。
0
私はNode.jsのバインディングについて知っているが、情報が公開されている外部udevadm
ツールを使用していない:
$ udevadm monitor
monitor will print the received events for:
UDEV - the event which udev sends out after rule processing
KERNEL - the kernel uevent
KERNEL[766928.886896] add /devices/pci0000:00/0000:00:10.0/usb5/5-1 (usb)
KERNEL[766928.888766] add /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0 (usb)
UDEV [766929.091194] add /devices/pci0000:00/0000:00:10.0/usb5/5-1 (usb)
KERNEL[766930.777996] add /module/usb_storage (module)
UDEV [766930.780203] add /module/usb_storage (module)
KERNEL[766930.781054] add /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4 (scsi)
KERNEL[766930.781241] add /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/scsi_host/host4 (scsi_host)
KERNEL[766930.781370] add /bus/usb/drivers/usb-storage (drivers)
UDEV [766930.782320] add /bus/usb/drivers/usb-storage (drivers)
KERNEL[766931.092511] add /module/uas (module)
UDEV [766931.092584] add /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0 (usb)
KERNEL[766931.092608] add /bus/usb/drivers/uas (drivers)
UDEV [766931.093550] add /module/uas (module)
UDEV [766931.094000] add /bus/usb/drivers/uas (drivers)
UDEV [766931.094305] add /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4 (scsi)
UDEV [766931.095737] add /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/scsi_host/host4 (scsi_host)
KERNEL[766931.807635] add /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0 (scsi)
KERNEL[766931.807770] add /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0/4:0:0:0 (scsi)
KERNEL[766931.807901] add /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0/4:0:0:0/scsi_disk/4:0:0:0 (scsi_disk)
KERNEL[766931.807995] add /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0/4:0:0:0/scsi_device/4:0:0:0 (scsi_device)
KERNEL[766931.809543] add /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0/4:0:0:0/scsi_generic/sg2 (scsi_generic)
KERNEL[766931.809605] add /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0/4:0:0:0/bsg/4:0:0:0 (bsg)
UDEV [766931.811736] add /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0 (scsi)
KERNEL[766931.812771] add /devices/virtual/bdi/8:16 (bdi)
UDEV [766931.815246] add /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0/4:0:0:0 (scsi)
UDEV [766931.815908] add /devices/virtual/bdi/8:16 (bdi)
UDEV [766931.818228] add /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0/4:0:0:0/scsi_disk/4:0:0:0 (scsi_disk)
UDEV [766931.819748] add /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0/4:0:0:0/bsg/4:0:0:0 (bsg)
UDEV [766931.821506] add /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0/4:0:0:0/scsi_device/4:0:0:0 (scsi_device)
UDEV [766931.821894] add /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0/4:0:0:0/scsi_generic/sg2 (scsi_generic)
KERNEL[766931.895701] add /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0/4:0:0:0/block/sdb (block)
KERNEL[766931.895807] add /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0/4:0:0:0/block/sdb/sdb1 (block)
KERNEL[766931.895879] add /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0/4:0:0:0/block/sdb/sdb2 (block)
UDEV [766933.474661] add /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0/4:0:0:0/block/sdb (block)
UDEV [766933.566443] add /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0/4:0:0:0/block/sdb/sdb2 (block)
UDEV [766933.658413] add /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0/4:0:0:0/block/sdb/sdb1 (block)
KERNEL[766942.802911] remove /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0/4:0:0:0/bsg/4:0:0:0 (bsg)
KERNEL[766942.804048] remove /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0/4:0:0:0/scsi_generic/sg2 (scsi_generic)
KERNEL[766942.804163] remove /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0/4:0:0:0/scsi_device/4:0:0:0 (scsi_device)
KERNEL[766942.804246] remove /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0/4:0:0:0/scsi_disk/4:0:0:0 (scsi_disk)
KERNEL[766942.804338] remove /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0/4:0:0:0/block/sdb/sdb2 (block)
KERNEL[766942.804426] remove /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0/4:0:0:0/block/sdb/sdb1 (block)
KERNEL[766942.804518] remove /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0/4:0:0:0/block/sdb (block)
KERNEL[766942.804590] remove /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0/4:0:0:0 (scsi)
UDEV [766942.806838] remove /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0/4:0:0:0/bsg/4:0:0:0 (bsg)
UDEV [766942.807543] remove /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0/4:0:0:0/scsi_generic/sg2 (scsi_generic)
UDEV [766942.809181] remove /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0/4:0:0:0/scsi_disk/4:0:0:0 (scsi_disk)
UDEV [766942.809410] remove /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0/4:0:0:0/scsi_device/4:0:0:0 (scsi_device)
UDEV [766942.812382] remove /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0/4:0:0:0/block/sdb/sdb1 (block)
UDEV [766942.812545] remove /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0/4:0:0:0/block/sdb/sdb2 (block)
UDEV [766942.814711] remove /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0/4:0:0:0/block/sdb (block)
UDEV [766942.815300] remove /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0/4:0:0:0 (scsi)
KERNEL[766942.816341] remove /devices/virtual/bdi/8:16 (bdi)
KERNEL[766942.816384] remove /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0 (scsi)
UDEV [766942.817716] remove /devices/virtual/bdi/8:16 (bdi)
UDEV [766942.819175] remove /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/target4:0:0 (scsi)
KERNEL[766942.864803] remove /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/scsi_host/host4 (scsi_host)
KERNEL[766942.864891] remove /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4 (scsi)
KERNEL[766942.865168] remove /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0 (usb)
KERNEL[766942.866960] remove /devices/pci0000:00/0000:00:10.0/usb5/5-1 (usb)
UDEV [766942.867670] remove /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4/scsi_host/host4 (scsi_host)
UDEV [766942.868469] remove /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0/host4 (scsi)
UDEV [766942.869291] remove /devices/pci0000:00/0000:00:10.0/usb5/5-1/5-1:1.0 (usb)
UDEV [766942.870791] remove /devices/pci0000:00/0000:00:10.0/usb5/5-1 (usb)
いくつかの注意を:
- 上に複数のパーティションがある場合もありますUSBスティック、またはパーティションなしで直接ファイルシステムを持つことができます。
- おそらく、USBデバイスを監視する必要はありません。おそらく、のいずれかのデバイスがあります。おそらく、ブロックデバイスですか?
- これはフィルタリングを行っていないため、関連のないイベントがまだ多く発生します。
関連する問題
- 1. 接続されたUSBデバイスのポート名の取得
- 2. Mac、デバイスが接続されているUSBポート名を表示
- 3. 接続されたUSBデバイスのデバイスパスを取得する
- 4. どのようにデバイスがUSBポート2.0またはUSBポート3.00に接続されて見つけるか?
- 5. マシンに接続されているUSBデバイスのパス?
- 6. MIDIデバイスが接続されているUSBポートをportmidi/pyportmidiで見つけることは可能ですか
- 7. 接続されているUSBデバイスの速度を知るには?
- 8. USBデバイスをプログラムで接続して再接続する方法
- 9. VBScript経由で接続されたUSBデバイスのVID/PIDを取得
- 10. 一度だけEXEをトリガーするデバイスがUSBで接続されている
- 11. Neo4j内の特定のノードに接続されていないノードを取得
- 12. 接続されたUSBデバイスをチェックするCMDコマンド
- 13. 接続されたUSBデバイスでUSBホストコントローラを見つける方法
- 14. 特定のノードに接続されているすべてのノードのインデックスを取得する
- 15. USBデバイスが接続されているときにユーザーからの入力を受け取ります
- 16. USB HIDデバイスが接続されているときにusbidが自動ロードされないようにする
- 17. USBポートからバイナリデータを取得する
- 18. 接続されたBTデバイスを取得する方法
- 19. 複数の接続を開くUSBデバイス内の永続的な名前|| USBを特定のポートに接続する
- 20. libusbを正しく接続して接続されたUSBデバイスと通信するには?
- 21. デバイスを接続する前にUSBドライバをインストールする
- 22. Vistaのデルファイで接続されたUSB情報を取得する
- 23. USBデバイスをプログラムで接続して切断する
- 24. USBデバイスを取得するuriパスカッププリンタ
- 25. Androidホスト:マスストレージUSBデバイスとの接続
- 26. ios:ホストとUSB接続デバイスの通信
- 27. USBポートからRJ45コンソールデバイスに接続する方法は?
- 28. 接続されているクライアントの数を取得する
- 29. Cで同じUSBハブに接続された2つのUSBデバイスを検出する方法#
- 30. USBデバイスをドッキングコンテナに接続する方法
あなたはnode-usb-detectionですか? npmjsで?そのusb(npmjs)に基づいています。ポートを取得するのは難しいです。また、それを探しています。私が解決策を見つけたら投稿します –