Команда или сценарий оболочки для определения имени учетной записи MobileMe и копирования его в буфер обмена

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

2 ответа

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

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

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

Поскольку 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}'

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

Другие вопросы по тегам