用于定义MobileMe帐户名称并将其复制到剪贴板的Shell命令或脚本

时间:2011-03-27 23:00:42

标签: macos shell terminal mobileme

你好我正在为os x做小服务,我想知道如何获取MobileMe帐户名(如果有人登录osx)以便在脚本中进一步使用?

2 个答案:

答案 0 :(得分:1)

以下代码段会按您的要求执行吗?

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

将值复制到剪贴板中(我之前在问题中遗漏的那一点)

答案 1 :(得分:0)

由于MobileMe将证书和公钥/私钥存储在钥匙串中,您可以使用

security find-identity -v

要生成有效身份列表,您可以从中提取名称中包含(MobileMe Sharing Certificate)的身份的MobileMe用户名。

要做到这一点,我只能想出这个有用的,尽管是丑陋的解决方案,使用sed打印双引号和awk之间的字符,只打印用户名:

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

(如果有人为此找到更优雅的解决方案,我会很高兴听到!)