SQLite

Remote Desktop은 수집하는 정보를 SQLite 데이터베이스에 저장합니다.

데이터베이스에 관하여

Remote Desktop은 ‘systeminformation’이라는 표에 시스템 정보 데이터를 캡처합니다. 데이터 기록을 유지하지는 않습니다. 새로운 값은 데이터가 수집될 때마다 이전에 캡처된 정보를 덮어씁니다. 이력 데이터를 보존하고 싶다면 데이터를 두 번째 데이터베이스에 캡처할 수 있습니다. 데이터베이스에 있는 데이터는 OS X 배포를 도울 수도 있습니다. App이 컴퓨터 레코드에 접근하거나 데이터베이스의 값을 기반으로 한 기계에 한정적인 설정을 동기화할 수 있기 때문입니다.

연습 목적으로 사용 시 데이터베이스를 읽기 전용으로 사용해야 합니다. 데이터베이스 구조는 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에 대한 man 페이지를 참조하십시오.

이 명령은 매우 읽기 쉬운 열을 출력하고 해당 열 제목을 표시합니다.

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 필드는 리포트 데이터를 통해 응답하는 클라이언트의 이더넷 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_FireWireDeviceEl

각 objectname에 대해 다양한 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 4H63861KVMM

컴퓨터 이름(이더넷 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는 셀 명령을 실행할 수 있기 때문에 sqlite3 출력을 수집하고 다른 App으로 전송하는 데 사용될 수 있습니다. 이 예제는 리포트 데이터를 수집하고 텍스트 편집기로 전송합니다.

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

Manufacturer

Model

OwnerName

PermissionModes

PermissionsAreEnabled

Protocol

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

Manufacturer

Model

Mac_SystemInfoElement

ARDComputerInfo1

ARDComputerInfo2

ARDComputerInfo3

ARDComputerInfo4

ModemCountryInfo

SelectedPrinterName

SelectedPrinterPostScriptVersion

SelectedPrinterType

WirelessChannelNumber

WirelessIsComputerToComputer

WirelessNetworkName