SQLite

「Remote Desktop」では、SQLite データベースに収集した情報が保存されます。

データベースについて

「Remote Desktop」では、「systeminformation」というテーブルにシステム情報データが取り込まれます。履歴データは維持されません。データを取り込むときは常に、以前に取り込まれた情報が新しい値で上書きされます。履歴データを保持したい場合は、データを 2 番目のデータベースに取り込むことができます。アプリケーションはデータベース内の値に基づいてコンピュータのレコードにアクセスしたり、コンピュータ固有の設定を同期したりすることができるため、データベース内のデータは OS X の配置にも役立ちます。

実際の用途では、データベースを読み取り専用として扱ってください。データベースの構造は、「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:58Z

ComputerID フィールドは、レポートデータで応答したクライアントの Ethernet MAC アドレスと一致し、SQL クエリーを作成するための一意の値として使用できます。上記の例の SQL を次のように変更すると、すべてのオブジェクト名タイプを確認できます:

sudo sqlite3 -header -column /var/db/RemoteManagement/RMDB/rmdb.sqlite3 "SELECT distinct objectname FROM systeminformation"

出力:

ObjectName--------------------Mac_HardDriveElementMac_NetworkInterfaceMac_SystemInfoElemenMac_RAMSlotElementMac_PCIBusElementMac_USBDeviceElementMac_FireWireDeviceEl

オブジェクト名ごとに、多くのプロパティ名の値が対応します。クエリーを次のように変更すると、利用可能なオブジェクト名とプロパティ名のペアが表示されます:

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 QP4241FHPMZ00:16:cb:a2:6d:1b MachineSerialNumber YM6090M9U3900:16:cb:ca:81:52 MachineSerialNumber W862100NW9200:17:f2:04:db:24 MachineSerialNumber G86492DVX6800:14:51:22:28:38 MachineSerialNumber W854503QURC00:17:f2:2b:b9:59 MachineSerialNumber 4H63861KVMM

Ethernet 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---------- -----------Xserve QP4241FHPMZmini YM6090M9U39NetBoot001 W862100NW92Server G86492DVX68Server2 W854503QURCWendy G 4H63861KVMM

sqlite コマンドで「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 を実行」アクションを使用してシェルコマンドが構築されます。これによって認証ダイアログを表示できます。この例の区切り文字はタブです。

SQL クエリーを要求して実行する「Automator」のワークフローのスクリーンショット。

SQLite クエリー項目

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

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_SystemInfoElement

ActiveProcessorCount

AppleTalkIsActive

ATADeviceCount

BootROMVersion

BusDataSize

BusSpeed

BusSpeedString

ComputerName

DataDate

En0Address

FileSharingIsEnabled

FireWireDeviceCount

FTPIsEnabled

HasKeyboardConnected

HasLightsOutController

HasMouseConnected

HasVectorProcessingUnit

KernelVersion

Level2CacheSize

MachineClass

MachineIsNetBooted

MachineModel

MachineSerialNumber

MainMonitorDepth

MainMonitorHeight

MainMonitorType

MainMonitorWidth

ModemDescription

ModemDriverInfo

ModemInstalled

ModemInterfaceType

OpticalDriveType

PCISlotsUsedCount

PhysicalMemorySize

PrimaryIPAddress

PrimaryNetworkCollisions

PrimaryNetworkFlags

PrimaryNetworkHardwareAddress

PrimaryNetworkInputErrors

PrimaryNetworkInputPackets

PrimaryNetworkOutputErrors

PrimaryNetworkOutputPackets

PrimaryNetworkType

PrinterSharingEnabled

ProcessorCount

ProcessorSpeed

ProcessorSpeedString

ProcessorType

RemoteAppleEventsEnabled

RemoteLoginEnabled

SCSIDeviceCount

SleepDisplayWhenInactive

SleepWhenInactive

SpinDownHardDrive

SystemVersion

SystemVersionString

TotalFreeHardDriveSpace

TotalHardDriveSpace

TotalRAMSlots

TotalSwapFileSize

TrashSize

UnixHostName

UnusedRAMSlots

USBDeviceCount

UserMemorySize

WakeOnLanEnabled

WebSharingIsEnabled

WindowsFileSharingEnabled

WirelessCardInstalled

Mac_RAMSlotElement

DataDate

MemoryModuleSize

MemoryModuleSpeed

MemoryModuleType

SlotIdentifier

Mac_PCIBusElement

CardMemory

CardName

CardRevision

CardType

DataDate

DeviceID

RomRevision

SlotName

VendorID

Mac_NetworkInterfaceElement

DomainName

Mac_SystemInfoElement

WirelessCardFirmwareVersion

WirelessCardHardwareAddress

WirelessCardIsActive

WirelessCardLocale

WirelessCardType

Mac_USBDeviceElement

BusPower

DataDate

DeviceSpeed

ProductID

ProductName

SerialNumber

VendorID

Mac_SystemInfoElement

WirelessNetworkAvailable

Mac_FireWireDeviceElement

DataDate

DeviceSpeed

製造元

モデル

Mac_SystemInfoElement

ARDComputerInfo1

ARDComputerInfo2

ARDComputerInfo3

ARDComputerInfo4

ModemCountryInfo

SelectedPrinterName

SelectedPrinterPostScriptVersion

SelectedPrinterType

WirelessChannelNumber

WirelessIsComputerToComputer

WirelessNetworkName