Командная строка или скрипт для определения имени учетной записи MobileMe и копирования его в буфер обмена - PullRequest
1 голос
/ 28 марта 2011

Здравствуйте, я работаю над небольшим сервисом для OS X, мне было интересно, как я могу получить имя учетной записи MobileMe (если пользователь вошел в osx) для дальнейшего использования в сценарии?

Ответы [ 2 ]

1 голос
/ 28 марта 2011

Будет ли следующий фрагмент делать то, что вы спрашиваете?

dscl localhost -readpl /Local/Default/Users/$(id -un) dsAttrTypeNative:LinkedIdentity mac.com | grep -A1 '>name<' | sed -n 's/.*string>\(.*\)<\/string>.*/\1/p'

Первый элемент читает связанный идентификатор mac.com из служб каталогов для пользователя, выполняющего запрос, следующий элемент находит поле имении последний элемент берет имя пользователя .mac и отображает его.

, чтобы поместить его в буфер обмена, вы вводите эту команду со следующим окончанием:

dscl localhost -readpl /Local/Default/Users/$(id -un) dsAttrTypeNative:LinkedIdentity mac.com | grep -A1 '>name<' | sed -n 's/.*string>\(.*\)<\/string>.*/\1/p' | pbcopy

, которая копирует значениев буфер обмена (этот бит я пропустил в вопросе ранее)

0 голосов
/ 28 марта 2011

Поскольку MobileMe хранит сертификаты и открытые / закрытые ключи в связке ключей, вы можете использовать

security find-identity -v

Чтобы создать список действительных удостоверений, откуда можно извлечь имя пользователя MobileMe из удостоверения с (MobileMe Sharing Certificate) в его имени.

Чтобы сделать это, я мог бы только придумать это работающее, хотя и уродливое решение, которое использует sed для печати символов между двойными кавычками и awk для печати только имени пользователя:

security find-identity -v | grep MobileMe | sed -n 's/\(.*\)\"\(.*\)\"\(.*\)/\2/p' | awk '{print $1}'

(Если кто-то найдет более элегантное решение для этого, я буду рад это услышать!)

...