Python源码示例:SystemConfiguration.SCDynamicStoreCopyConsoleUser()

示例1
def send_installed_uptodate(item_display_name):
    ''' Notify if item that install was requested for is uptodate, check username again incase
        user logged out during execution '''

    username = (SCDynamicStoreCopyConsoleUser(None, None, None) or [None])[0]
    if os.path.exists(NOTIFIER_PATH) and username:
        #    item_name  - example: OracleJava8
        #    item_display_name - example: Oracle Java 8
        #    item_version - example: 1.8.111.14
        if DATAJAR_NOTIFIER:
            notifier_args = ['/usr/bin/su', '-l', username, '-c', '"{0}" --messageaction "{1}" \
        --message "{2}" --title "{3}" --type banner'.format(NOTIFIER_PATH, NOTIFIER_SENDER_ID, \
                            NOTIFIER_MSG_UPTODATE % (item_display_name), NOTIFIER_MSG_TITLE,)]
        else:
            notifier_args = ['su', '-l', username, '-c', '"{0}" -sender "{1}" -message "{2}" \
                                     -title "{3}"'.format(NOTIFIER_PATH, NOTIFIER_SENDER_ID, \
                                                NOTIFIER_MSG_UPTODATE % (item_display_name), \
                                                                       NOTIFIER_MSG_TITLE,)]
        # Send notification
        subprocess.call(notifier_args, close_fds=True) 
示例2
def fact():
    """Returns the user profiles"""
    profiles = []
    console_user = SCDynamicStoreCopyConsoleUser(None, None, None)[0]

    if os.getuid() == 0:
        cmd = ["sudo", "-u", console_user, "/usr/bin/profiles", "-Lo", "stdout-xml"]
    else:
        cmd = ["/usr/bin/profiles", "-Lo", "stdout-xml"]
    task = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    out = task.stdout.read()

    if out:
        d = plistlib.readPlistFromString(out)
        if d:
            for i in d[console_user]:
                profiles.append(i["ProfileDisplayName"])

    return {factoid: profiles} 
示例3
def fact():
    """Returns the icloud desktop sync status"""

    result = False

    console_user = SCDynamicStoreCopyConsoleUser(None, None, None)[0]
    plist = "/Users/%s/Library/Preferences/MobileMeAccounts.plist" % console_user
    if os.path.exists(plist):
        d = CFPreferencesCopyAppValue("Accounts", plist)[0]["Services"][2]
        sync_active = d.get("Enabled", False)
        files = glob.glob(
            "/Users/%s/Library/Mobile Documents/com~apple~CloudDocs/*" % console_user
        )
        if sync_active and files:
            for f in files:
                if os.path.islink(f):
                    result = True
                    break

    return {factoid: result} 
示例4
def get_console_user():
    cfuser = SCDynamicStoreCopyConsoleUser(None, None, None)
    console_user = cfuser[0]
    print "console user:", console_user or "-"
    return console_user 
示例5
def getconsoleuser():
    cfuser = SCDynamicStoreCopyConsoleUser(None, None, None)
    return cfuser 
示例6
def fact():
    """Gets the AD groups from the nomad plist"""
    result = ""

    username = SCDynamicStoreCopyConsoleUser(None, None, None)[0]
    if username:
        result = CFPreferencesCopyAppValue(
            "Groups",
            "/Users/%s/Library/Preferences/com.trusourcelabs.NoMAD.plist" % username,
        )

    return {factoid: result} 
示例7
def fact():
    """Returns whether current console user is an admin"""
    result = False

    cmd = ["/usr/bin/dscl", "-plist", ".", "read", "/Groups/admin"]
    output = subprocess.check_output(cmd)
    d = plistlib.readPlistFromString(output)["dsAttrTypeStandard:GroupMembership"]

    console_user = SCDynamicStoreCopyConsoleUser(None, None, None)[0]
    if console_user in d:
        result = True

    return {factoid: result} 
示例8
def fact():
    """Gets the date of last password change"""
    password_changed = "None"

    # for 10.10+ or non-migrated accounts
    username = SCDynamicStoreCopyConsoleUser(None, None, None)[0]
    if username:
        task = subprocess.check_output(
            ["/usr/bin/dscl", ".", "read", "Users/" + username, "accountPolicyData"]
        )
        plist = plistlib.readPlistFromString("\n".join(task.split()[1:]))
        if "passwordLastSetTime" in plist.keys():
            password_changed = datetime.datetime.utcfromtimestamp(
                plist["passwordLastSetTime"]
            ).date()
        else:
            # for 10.9.x and lower, or migrated accounts
            task = subprocess.Popen(
                [
                    "/usr/bin/dscl",
                    ".",
                    "read",
                    "Users/" + username,
                    "PasswordPolicyOptions",
                ],
                stdout=subprocess.PIPE,
                stderr=subprocess.PIPE,
            )
            (out, err) = task.communicate()
            if not err:
                plist = plistlib.readPlistFromString("\n".join(out.split()[1:]))
                if "passwordLastSetTime" in plist.keys():
                    password_changed = plist["passwordLastSetTime"].date()

    return {factoid: str(password_changed)} 
示例9
def fact():
    """Gets the ADSite from the nomad plist"""
    result = ""

    username = SCDynamicStoreCopyConsoleUser(None, None, None)[0]
    if username:
        result = CFPreferencesCopyAppValue(
            "ADSite",
            "/Users/%s/Library/Preferences/com.trusourcelabs.NoMAD.plist" % username,
        )

    return {factoid: result} 
示例10
def fact():
    """Returns the icloud account"""
    result = "None"

    console_user = SCDynamicStoreCopyConsoleUser(None, None, None)[0]
    plist = "/Users/%s/Library/Preferences/MobileMeAccounts.plist" % console_user
    if os.path.exists(plist):
        d = CFPreferencesCopyAppValue("Accounts", plist)
        result = d[0]["AccountID"] if d else False

    return {factoid: result} 
示例11
def fact():
    """Returns the icloud drive status"""
    result = "None"
    console_user = SCDynamicStoreCopyConsoleUser(None, None, None)[0]
    plist = "/Users/%s/Library/Preferences/MobileMeAccounts.plist" % console_user
    if os.path.exists(plist):
        d = CFPreferencesCopyAppValue("Accounts", plist)[0]["Services"][2]
        if d:
            result = d.get("Enabled", False)

    return {factoid: result} 
示例12
def fact():
    """Gets the LastPasswordExpireDate value from the nomad plist"""
    result = ""

    username = SCDynamicStoreCopyConsoleUser(None, None, None)[0]
    if username:
        result = CFPreferencesCopyAppValue(
            "LastPasswordExpireDate",
            "/Users/%s/Library/Preferences/com.trusourcelabs.NoMAD.plist" % username,
        )

    return {factoid: result} 
示例13
def fact():
    """Gets the assigned user from the nomad plist"""
    result = ""

    username = SCDynamicStoreCopyConsoleUser(None, None, None)[0]
    if username:
        result = CFPreferencesCopyAppValue(
            "UserShortName",
            "/Users/%s/Library/Preferences/com.trusourcelabs.NoMAD.plist" % username,
        )

    return {factoid: result} 
示例14
def fact():
    """Returns the current console user"""
    result = SCDynamicStoreCopyConsoleUser(None, None, None)[0]

    return {factoid: result} 
示例15
def fact():
    """Returns the iCloud disk optimization status"""

    result = "None"

    console_user = SCDynamicStoreCopyConsoleUser(None, None, None)[0]
    plist = "/Users/%s/Library/Preferences/com.apple.bird.plist" % console_user

    if os.path.exists(plist):
        result = CFPreferencesCopyAppValue("optimize-storage", plist)

    return {factoid: result} 
示例16
def get_console_user():
    """Use SystemConfiguration framework to get the current console user."""
    from SystemConfiguration import SCDynamicStoreCopyConsoleUser
    cfuser = SCDynamicStoreCopyConsoleUser(None, None, None)
    return cfuser[0] 
示例17
def fact():
    """Gets the age of last password change"""
    password_age = None
    password_changed = False

    # for 10.10+ or non-migrated accounts
    username = SCDynamicStoreCopyConsoleUser(None, None, None)[0]
    if username:
        task = subprocess.check_output(
            ["/usr/bin/dscl", ".", "read", "Users/" + username, "accountPolicyData"]
        )
        plist = plistlib.readPlistFromString("\n".join(task.split()[1:]))
        if "passwordLastSetTime" in plist.keys():
            password_changed = datetime.datetime.utcfromtimestamp(
                plist["passwordLastSetTime"]
            ).date()
        else:
            # for 10.9.x and lower, or migrated accounts
            task = subprocess.Popen(
                [
                    "/usr/bin/dscl",
                    ".",
                    "read",
                    "Users/" + username,
                    "PasswordPolicyOptions",
                ],
                stdout=subprocess.PIPE,
                stderr=subprocess.PIPE,
            )
            (out, err) = task.communicate()
            if not err:
                plist = plistlib.readPlistFromString("\n".join(out.split()[1:]))
                if "passwordLastSetTime" in plist.keys():
                    password_changed = plist["passwordLastSetTime"].date()

        if password_changed:
            today = datetime.datetime.utcnow().date()
            password_age = (today - password_changed).days
        else:
            password_age = "Undetermined"

    return {factoid: password_age}