Remote DesktopのSQLiteについて
「Remote Desktop」では、SQLite データベースに収集した情報が保存されます。
データベースについて
「Remote Desktop」では、「systeminformation」というテーブルにシステム情報データが取り込まれます。履歴データは維持されません。データを取り込むときは常に、以前に取り込まれた情報が新しい値で上書きされます。履歴データを保持したい場合は、データを 2 番目のデータベースに取り込むことができます。アプリはデータベース内の値に基づいてコンピュータのレコードにアクセスしたり、コンピュータ固有の設定を同期したりすることができるため、データベース内のデータは macOS の配置にも役立ちます。
実際の用途では、データベースを読み取り専用として扱ってください。データベースの構造は、「Remote Desktop」の新しいバージョンの必要性を満たすために変更されることがあります。状況によっては、「Remote Desktop」により、破損を防ぐためにデータベースが消去されます。
SQLite データベースは「/private/var/db/RemoteManagement/RMDB/rmdb.sqlite3」にあります。RMDB ディレクトリはデーモンユーザに制限されているので、ファイルにアクセスするにはスーパーユーザ(sudo)アクセスが必要です。sudo を使用してコマンドを実行するときは、管理者パスワードを求められます。
コマンドラインを使用してデータを取得する
sqlite3 ツールは「/usr/bin/sqlite3」にインストールされます。
sqlite3 ツールでは、Remote Desktop データベースのテーブルとデータにアクセスできます。以下では、「systeminformation」テーブル(レポートデータが保存されているテーブル)の SQL クエリーが送信されます。
sudo sqlite3 /var/db/RemoteManagement/RMDB/rmdb.sqlite3 "select * from systeminformation"以下は、出力の最初の数行の例です。行は、フォントサイズおよびウインドウサイズに応じて折り返されることがあります。
00:0d:93:9c:0a:e4|Mac_HardDriveElement|DataDate|0|2008-12-11T23:05:58Z|2008-12-11T23:05:58Z00:0d:93:9c:0a:e4|Mac_HardDriveElement|Model|0|Hitachi HDS722580VLSA80|2008-12-11T23:05:58Z00:0d:93:9c:0a:e4|Mac_HardDriveElement|VolumeName|0|Server HD|2008-12-11T23:05:58Z00:0d:93:9c:0a:e4|Mac_HardDriveElement|JournalingIsActive|0|true|2008-12-11T23:05:58Z00:0d:93:9c:0a:e4|Mac_HardDriveElement|LastBackupDate|0|2008-09-05T18:13:22Z|2008-12-11T23:05:58Z00:0d:93:9c:0a:e4|Mac_HardDriveElement|LastModificationDate|0|2008-12-11T23:05:57Z|2008-12-11T23:05:58Z列の間で使用する区切り文字を -separator スイッチで調整します。このサンプルでは、区切り文字としてカンマが使用されます。
sudo sqlite3 -separator , /var/db/RemoteManagement/RMDB/rmdb.sqlite3 "select * from systeminformation"その他の便利なスイッチとしては、-html、-line、-list、および -column があります。詳しくは、sqlite3 のマニュアルページを参照してください。
次のコマンドでは、非常に読みやすい列で出力され、列ヘッダが表示されます。
sudo sqlite3 -header -column /var/db/RemoteManagement/RMDB/rmdb.sqlite3 \    "select * from systeminformation"ComputerID        ObjectName           PropertyName ItemSeq    Value                LastUpdated----------------- -------------------- ------------ ---------- -------------------- --------------------00:0d:93:9c:0a:e4 Mac_HardDriveElement DataDate     0          2008-12-11T23:05:58Z 2008-12-11T23:05:58Z00:0d:93:9c:0a:e4 Mac_HardDriveElement Model        0          Hitachi HDS722580VLS 2008-12-11T23:05:58Z00:0d:93:9c:0a:e4 Mac_HardDriveElement VolumeName   0          Server HD            2008-12-11T23:05:58Z00:0d:93:9c:0a:e4 Mac_HardDriveElement JournalingIs 0          true                 2008-12-11T23:05:58Z00:0d:93:9c:0a:e4 Mac_HardDriveElement LastBackupDa 0          2008-09-05T18:13:22Z 2008-12-11T23:05:58Z00:0d:93:9c:0a:e4 Mac_HardDriveElement LastModifica 0          2008-12-11T23:05:57Z 2008-12-11T23:05:58Z00:0d:93:9c:0a:e4 Mac_HardDriveElement TotalSize    0          80287128.000000      2008-12-11T23:05:58ZComputerID フィールドは、レポートデータで応答したクライアントの Ethernet MAC アドレスと一致し、SQL クエリーを作成するための一意の値として使用できます。上記の例のSQLを次のように変更すると、すべてのobjectnameタイプを確認できます:
sudo sqlite3 -header -column /var/db/RemoteManagement/RMDB/rmdb.sqlite3 \    "SELECT distinct objectname FROM systeminformation"出力:
ObjectName -------------------- Mac_HardDriveElementMac_NetworkInterfaceMac_SystemInfoElemenMac_RAMSlotElementMac_PCIBusElementMac_USBDeviceElementMac_FireWireDeviceElobjectnameごとに、多くのpropertynameの値が対応します。クエリーを次のように変更すると、利用可能なobjectname/propertynameのペアが表示されます:
sudo sqlite3 -header -column /var/db/RemoteManagement/RMDB/rmdb.sqlite3 \    "SELECT distinct objectname, propertyname FROM systeminformation"出力:
ObjectName           PropertyName -------------------- ------------Mac_HardDriveElement DataDateMac_HardDriveElement ModelMac_HardDriveElement VolumeNameMac_HardDriveElement JournalingIsMac_HardDriveElement LastBackupDaMac_HardDriveElement LastModificaこれらのプロパティを組み合わせると、特定の値を取得する SQL クエリーを作成できます。たとえば、クライアントのシリアル番号を検索するときは、次のコマンドを使います:
sudo sqlite3 -header -column /var/db/RemoteManagement/RMDB/rmdb.sqlite3 "SELECT distinct computerid, propertyname, value FROM systeminformation WHERE propertyname = 'MachineSerialNumber'"ComputerID        PropertyName        Value ----------------- ------------------- ----------- 00:0d:93:9c:0a:e4 MachineSerialNumber QP4241FHPMZ 00:16:cb:a2:6d:1b MachineSerialNumber YM6090M9U39 00:16:cb:ca:81:52 MachineSerialNumber W862100NW92 00:17:f2:04:db:24 MachineSerialNumber G86492DVX68 00:14:51:22:28:38 MachineSerialNumber W854503QURC 00:17:f2:2b:b9:59 MachineSerialNumber 4H63861KVMMEthernet ID の代わりにコンピュータの名前および値のリストを SQL クエリーで取得します:
sudo sqlite3 -header -column /var/db/RemoteManagement/RMDB/rmdb.sqlite3 "SELECT R1.value, R2.value FROM systeminformation R1, systeminformation R2 WHERE R1.computerid=R2.computerid AND R1.propertyname='ComputerName' AND R2.propertyName='MachineSerialNumber'"出力:
Value      Value ---------- ----------- mini     X0XX234XYXYX mini       X01X23X4XXXX NetBoot001 X01X0101XXX0 Server     XX12345XXX6 Server2    PPYWWSSSEEER Aga O    X0XX123XY4XYsqlite コマンドで「Automator」を使用する
Automatorではシェルコマンドを実行できるので、Automatorを使用してsqlite3の出力を収集し、それをほかのアプリに送信できます。次の例では、レポートデータを収集して、それを「テキストエディット」に送信しています:
on run {input, parameters}    return do shell script "/usr/bin/sqlite3 -separator " & quote & tab & quote & " /var/db/RemoteManagement/RMDB/rmdb.sqlite3 " & quote & input & quote with administrator privilegesend runこのワークフローでは SQL コマンドが要求されてから、「AppleScript を実行」アクションを使用してシェルコマンドが構築されます。これによって認証ダイアログを表示できます。この例の区切り文字はタブです。
SQLite クエリー項目
SQLiteを使用して以下の項目を照会できます:
Mac_SystemInfoElement
- ActiveProcessorCount 
- AppleTalkIsActive 
- ATADeviceCount 
- ARDComputerInfo1 
- ARDComputerInfo2 
- ARDComputerInfo3 
- ARDComputerInfo4 
- BootROMVersion 
- BusDataSize 
- BusSpeed 
- BusSpeedString 
- ComputerName 
- DataDate 
- En0Address 
- FileSharingIsEnabled 
- FireWireDeviceCount 
- FTPIsEnabled 
- HasKeyboardConnected 
- HasLightsOutController 
- HasMouseConnected 
- HasVectorProcessingUnit 
- KernelVersion 
- Level2CacheSize 
- MachineClass 
- MachineModel 
- MachineSerialNumber 
- MainMonitorDepth 
- MainMonitorHeight 
- MainMonitorType 
- MainMonitorWidth 
- ModemCountryInfo 
- ModemDescription 
- ModemDriverInfo 
- ModemInstalled 
- ModemInterfaceType 
- OpticalDriveType 
- PCISlotsUsedCount 
- PhysicalMemorySize 
- PrimaryIPAddress 
- PrimaryNetworkCollisions 
- PrimaryNetworkFlags 
- PrimaryNetworkHardwareAddress 
- PrimaryNetworkInputErrors 
- PrimaryNetworkInputPackets 
- PrimaryNetworkOutputErrors 
- PrimaryNetworkOutputPackets 
- PrimaryNetworkType 
- PrinterSharingEnabled 
- ProcessorCount 
- ProcessorSpeed 
- ProcessorSpeedString 
- ProcessorType 
- RemoteAppleEventsEnabled 
- RemoteLoginEnabled 
- SCSIDeviceCount 
- SelectedPrinterName 
- SelectedPrinterPostScriptVersion 
- SelectedPrinterType 
- SleepDisplayWhenInactive 
- SleepWhenInactive 
- SpinDownHardDrive 
- SystemVersion 
- SystemVersionString 
- TotalFreeHardDriveSpace 
- TotalHardDriveSpace 
- TotalRAMSlots 
- TotalSwapFileSize 
- TrashSize 
- UnixHostName 
- UnusedRAMSlots 
- USBDeviceCount 
- UserMemorySize 
- WakeOnLanEnabled 
- WebSharingIsEnabled 
- WindowsFileSharingEnabled 
- WirelessCardFirmwareVersion 
- WirelessCardHardwareAddress 
- WirelessCardIsActive 
- WirelessCardInstalled 
- WirelessCardLocale 
- WirelessCardType 
- WirelessChannelNumber 
- WirelessIsComputerToComputer 
- WirelessNetworkAvailable 
- WirelessNetworkName 
Mac_HardDriveElement
- CreationDate 
- DataDate 
- FileSystemType 
- FreeSpace 
- GroupName 
- IsBootVolume 
- IsCasePreserving 
- IsCaseSensitive 
- IsDetachable 
- IsWritable 
- JournalingIsActive 
- LastBackupDate 
- LastConsistencyCheckDate 
- LastModificationDate 
- LogicalUnitNumber 
- 製造元 
- モデル 
- OwnerName 
- PermissionModes 
- PermissionsAreEnabled 
- プロトコル 
- RemovableMedia 
- Revision 
- SerialNumber 
- SupportsJournaling 
- TotalFileCount 
- TotalFolderCount 
- TotalSize 
- UnixMountPoint 
- VolumeName 
Mac_NetworkInterfaceElement
- AllDNSServers 
- AllIPAddresses 
- ConfigurationName 
- ConfigurationType 
- DataDate 
- DomainName 
- EthernetAlignmentErrors 
- EthernetCarrierSenseErrors 
- EthernetChipSet 
- EthernetCollisionFrequencies 
- EthernetDeferredTransmissions 
- EthernetExcessiveCollisions 
- EthernetFCSErrors 
- EthernetFrameTooLongs 
- EthernetInternalMacRxErrors 
- EthernetInternalMacTxErrors 
- EthernetLateCollisions 
- EthernetMissedFrames 
- EthernetMultipleCollisionFrames 
- EthernetRxCollisionErrors 
- EthernetRxFrameTooShorts 
- EthernetRxInterrupts 
- EthernetRxOverruns 
- EthernetRxPHYTransmissionErrors 
- EthernetRxResets 
- EthernetRxResourceErrors 
- EthernetRxTimeouts 
- EthernetRxWatchdogTimeouts 
- EthernetSingleCollisionFrames 
- EthernetSQETestErrors 
- EthernetTxInterrupts 
- EthernetTxJabberEvents 
- EthernetTxPHYTransmissionErrors 
- EthernetTxResets 
- EthernetTxResourceErrors 
- EthernetTxTimeouts 
- EthernetTxUnderruns 
- HardwareAddress 
- InterfaceFlags 
- InterfaceName 
- IsActive 
- IsPrimary 
- NetworkCollisions 
- NetworkInputErrors 
- NetworkInputPackets 
- NetworkOutputErrors 
- NetworkOutputPackets 
- OutputQueueCapacity 
- OutputQueueDropCount 
- OutputQueueOutputCount 
- OutputQueuePeakSize 
- OutputQueueRetryCount 
- OutputQueueSize 
- OutputQueueStallCount 
- PrimaryDNSServer 
- PrimaryIPAddress 
- RouterAddress 
Mac_USBDeviceElement
- BusPower 
- DataDate 
- DeviceSpeed 
- ProductID 
- ProductName 
- SerialNumber 
- VendorID 
Mac_FireWireDeviceElement
- DataDate 
- DeviceSpeed 
- 製造元 
- モデル 
Mac_RAMSlotElement
- DataDate 
- MemoryModuleSize 
- MemoryModuleSpeed 
- MemoryModuleSpeed 
- MemoryModuleSpeed 
Mac_PCIBusElement
- CardMemory 
- CardName 
- CardRevision 
- CardType 
- DataDate 
- DeviceID 
- RomRevision 
- SlotName 
- VendorID