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:58Z
00:0d:93:9c:0a:e4|Mac_HardDriveElement|Model|0|Hitachi HDS722580VLSA80|2008-12-11T23:05:58Z
00:0d:93:9c:0a:e4|Mac_HardDriveElement|VolumeName|0|Server HD|2008-12-11T23:05:58Z
00:0d:93:9c:0a:e4|Mac_HardDriveElement|JournalingIsActive|0|true|2008-12-11T23:05:58Z
00:0d:93:9c:0a:e4|Mac_HardDriveElement|LastBackupDate|0|2008-09-05T18:13:22Z|2008-12-11T23:05:58Z
00: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:58Z
00:0d:93:9c:0a:e4 Mac_HardDriveElement Model 0 Hitachi HDS722580VLS 2008-12-11T23:05:58Z
00:0d:93:9c:0a:e4 Mac_HardDriveElement VolumeName 0 Server HD 2008-12-11T23:05:58Z
00:0d:93:9c:0a:e4 Mac_HardDriveElement JournalingIs 0 true 2008-12-11T23:05:58Z
00:0d:93:9c:0a:e4 Mac_HardDriveElement LastBackupDa 0 2008-09-05T18:13:22Z 2008-12-11T23:05:58Z
00:0d:93:9c:0a:e4 Mac_HardDriveElement LastModifica 0 2008-12-11T23:05:57Z 2008-12-11T23:05:58Z
00: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_HardDriveElement
Mac_NetworkInterface
Mac_SystemInfoElemen
Mac_RAMSlotElement
Mac_PCIBusElement
Mac_USBDeviceElement
Mac_FireWireDeviceEl
オブジェクト名ごとに、多くのプロパティ名の値が対応します。クエリーを次のように変更すると、利用可能なオブジェクト名とプロパティ名のペアが表示されます:
sudo sqlite3 -header -column /var/db/RemoteManagement/RMDB/rmdb.sqlite3
"SELECT distinct objectname, propertyname FROM systeminformation"
出力:
ObjectName PropertyName
-------------------- ------------
Mac_HardDriveElement DataDate
Mac_HardDriveElement Model
Mac_HardDriveElement VolumeName
Mac_HardDriveElement JournalingIs
Mac_HardDriveElement LastBackupDa
Mac_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 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 QP4241FHPMZ
mini YM6090M9U39
NetBoot001 W862100NW92
Server G86492DVX68
Server2 W854503QURC
Wendy 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 privileges
end run
このワークフローでは SQL コマンドが要求されてから、「AppleScript を実行」アクションを使用してシェルコマンドが構築されます。これによって認証ダイアログを表示できます。この例の区切り文字はタブです。
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 |