воскресенье, 10 апреля 2011 г.

Удалённая проверка источника питания на MacBook

Бывают разные случаи, когда полезно проверить подключен ли ноутбук к электросети.
Первый вариант, через VNC или Apple Remote Desktop загрузиться и посмотреть состояние в графическом режиме.
Но есть способ автоматизировать процесс.
В комплекте с MacOS идёт консольная утилита system_profiler.
Если её запустить просто так, то будет выдана куча системной информации.
Чтобы выделить только нужное, существует набор фильтров.
С полным списком можно ознакомиться командой:
$ system_profiler -listDataTypes
Available Datatypes:
SPHardwareDataType
SPNetworkDataType
SPSoftwareDataType
SPParallelATADataType
SPAudioDataType
SPBluetoothDataType
SPCardReaderDataType
SPDiagnosticsDataType
SPDiscBurningDataType
SPEthernetDataType
SPFibreChannelDataType
SPFireWireDataType
SPDisplaysDataType
SPHardwareRAIDDataType
SPMemoryDataType
SPPCIDataType
SPParallelSCSIDataType
SPPowerDataType
SPPrintersDataType
SPSASDataType
SPSerialATADataType
SPUSBDataType
SPAirPortDataType
SPFirewallDataType
SPNetworkLocationDataType
SPModemDataType
SPNetworkVolumeDataType
SPWWANDataType
SPApplicationsDataType
SPDeveloperToolsDataType
SPExtensionsDataType
SPFontsDataType
SPFrameworksDataType
SPLogsDataType
SPManagedClientDataType
SPPrefPaneDataType
SPStartupItemDataType
SPSyncServicesDataType
SPUniversalAccessDataType
Нас интересует только подсистема питания SPPowerDataType.
Выполняем:
$ system_profiler SPPowerDataType
Power:

    Battery Information:

      Model Information:
          Serial Number: 9G951015R4M1A
          Manufacturer: DP
          Device name: bq20z951
          Pack Lot Code: 0000
          PCB Lot Code: 0000
          Firmware Version: 0042
          Hardware Revision: 0001
          Cell Revision: 0122
      Charge Information:
          Charge remaining (mAh): 8346
          Fully charged: No
          Charging: No
          Full charge capacity (mAh): 11999
      Health Information:
          Cycle count: 99
          Condition: Normal
      Battery Installed: Yes
      Amperage (mA): -3316
      Voltage (mV): 7665

    System Power Settings:

      AC Power:
          System Sleep Timer (Minutes): 60
          Disk Sleep Timer (Minutes): 0
          Display Sleep Timer (Minutes): 60
          Automatic Restart On Power Loss: No
          Wake On AC Change: No
          Wake On Clamshell Open: Yes
          Wake On LAN: Yes
          Display Sleep Uses Dim: Yes
          GPUSwitch: 2
      Battery Power:
          System Sleep Timer (Minutes): 10
          Disk Sleep Timer (Minutes): 0
          Display Sleep Timer (Minutes): 7
          Wake On AC Change: No
          Wake On Clamshell Open: Yes
          Current Power Source: Yes
          Display Sleep Uses Dim: Yes
          GPUSwitch: 2
          Reduce Brightness: Yes

    Hardware Configuration:

      UPS Installed: No

    AC Charger Information:

      Connected: No
      Charging: No

Предпоследняя строчка
Connected: Yes
показывает, что подключен внешний источник питания.
И, наоборот,
Connected: No
говорит, что в настоящее время ноутбук работает от батареи.
А показатель
Charge remaining (mAh): 5893
уведомляет об оставшемся заряде. Зная
Full charge capacity (mAh): 12008
можно посчитать процент заряда.
Все необходимые нам индикаторы не составляет особого труда вычленить с помощью grep/awk, или, указав ключ -xml, распарсить результат с помощью Scala/Groovy.
Можно использовать Automator, в нём имеется встроенный компонент "Профиль системы" с аналогичным функционалом.
Теперь, с помощью cron, того же Automator и т.п. можно настроить, чтобы при падении заряда ниже какого-то уровня, отправлялось смс, почта и другие уведомления для принятия мер: воткнуть вилку в розетку или усыпить машину, если невозможно первое.

Комментариев нет: