1 votos

¿Es posible permitir el uso de un programa o aplicación para un tiempo determinado en mac?

Estaba tratando de lograr esto usando una segunda cuenta (que es la cuenta de administrador) y controles parentales, pero parecía que esto no es posible hacerlo utilizando los controles parentales. Sé que hay algunos programas que puedes descargar que ayudan con esto, (pavo frío, por ejemplo). Pero sería mucho más fácil si pudiera hacer esto usando sólo herramientas ya disponibles en mac

3voto

Douglas Puntos 10417

Usted puede hacer esto con construido en dos herramientas:

  • Gatekeeper para permitir/denegar el acceso a las aplicaciones (de los que he escrito sobre ello en este post)
  • Launchd para controlar la programación

Portero

El uso de Portero, podemos crear "reglas" que le permiten bloquear/habilitar aplicaciones. Usando tu ejemplo, podemos crear una lista de Aplicaciones que sólo se permite la ejecución de los viernes:

spctl --add --label "FridayApps" /Applications/SomeApp.app 

El beneficio de esto, es que se puede añadir varias aplicaciones con la misma etiqueta y habilitar/deshabilitar ellos en un solo comando:

sudo spctl --disable --label "FridayApps"   <---- For Saturday thru Thursday
sudo spctl --enable --label "FridayApps"    <---- For Friday

Launchd

Para esto se necesita un simple script para habilitar/deshabilitar las apps y los que usted necesita para ejecutar esto como un demonio (necesidades sudo de privilegio), así que tiene que residir en /Library/LaunchDaemons.

He utilizado la convención de nomenclatura com.user.FridayApps.plist y FridayApp.sh de la secuencia de comandos.

Script De Bash:

#!/bin/bash

DOW=$(date +%u)   # Sets the Day of Week; 5 = Friday
TOD=$(date +%T)   # Sets the time of Day
start="12:00:00"  # Sets start time   
end="23:59:00"    # Sets end time

if [ $DOW -eq 5 ]
then
    if [[ "$TOD" > "${start}"  &&  "$TOD" < "${end}" ]]
    then
      /usr/sbin/spctl --enable --label "FridayApps"
    fi
else
    /usr/sbin/spctl --disable --label "FridayApps"
fi

Launchd .plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.user.FridayApps</string>
    <key>ProgramArguments</key>
    <array>
        <string>/User/MyName/script/location/FridayApps.sh</string>

    </array>
    <key>StartCalendarInterval</key>
    <!--  Weekdays are 1 - 5; Sunday is 0 and 7   -->
    <array>
        <dict>
            <key>Weekday</key>
            <integer>5</integer>
            <key>Hour</key>
            <integer>12</integer>
            <key>Minute</key>
            <integer>01</integer>
        </dict>

        <dict>
            <key>Weekday</key>
            <integer>6</integer>
            <key>Hour</key>
            <integer>00</integer>
            <key>Minute</key>
            <integer>00</integer>
        </dict>
    </array>

</dict>
<key>RunAtLoad</key> 
<true/>
</plist>

##Load the `.plist`

sudo launchctl load com.user.FridayApps.plist

Cómo funciona esto

Lo que ocurre aquí es dos cosas:

  • launchd ejecuta una secuencia de comandos de dos veces. Una vez en el tiempo para correr y otra vez para desactivarlo
  • un simple script de bash para activar/desactivar la aplicación habilitada. Se verifica la fecha y, a continuación, ejecuta el comando correspondiente

0voto

Pirooz Puntos 486

Leer la Intro

En el siguiente tutorial vamos a hacer lo siguiente:

  1. Crear un Perfil de Configuración que va a bloquear las aplicaciones en una ruta determinada
  2. Una aplicación que va a agregar y quitar el perfil en función del día
  3. Un LaunchDaemon que se ejecute la aplicación de cada intervalo (5 min)

Crear la Aplicación

Abrir en Editor de secuencias de Comandos y de exportación como de sólo-lectura de la aplicación y asegúrese de permanecer abiertos después de ejecutar el controlador no está en

Después de la exportación de seguir este guía para evitar que se muestran en el dock.

   # Block Apps Based on Day By Josh Brown
    # Last Modified: Aug 23 2018
    on run
    if checkDay("Friday") then
        do shell script "sudo profiles remove -forced -identifier com.company.macos.blockapps"
    else
        do shell script "sudo profiles install forced -path /path/to/the.mobileconfig"
    end if
end run

on checkDay(myDay)
    set currentDay to weekday of (get current date)
    if (currentDay as string) is (myDay as string) then
        return true
    else
        return false
    end if
end checkDay

Crear el Móvil Config

Uso

<key>pathBlackList</key>
                <array>
                    <string>/path/to/an.app</string>
                    <string>/path/to/asecond.app</string>
                </array>

para controlar qué apps para bloquear.

Guardar a continuación un archivo con la extensión .mobileconfig

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>PayloadIdentifier</key>
    <string>com.company.macos.blockapps</string>
    <key>PayloadRemovalDisallowed</key>
    <true/>
    <key>PayloadScope</key>
    <string>System</string>
    <key>PayloadType</key>
    <string>Configuration</string>
    <key>PayloadUUID</key>
    <string>9c24d6b3-6233-4a08-a48d-9068f4f76cf0</string>
    <key>PayloadOrganization</key>
    <string>Company Name</string>
    <key>PayloadVersion</key>
    <integer>1</integer>
    <key>PayloadDisplayName</key>
    <string>Block Apps In User Folder</string>
    <key>PayloadContent</key>
    <array>
        <dict>
            <key>PayloadType</key>
            <string>com.apple.applicationaccess.new</string>
            <key>PayloadVersion</key>
            <integer>1</integer>
            <key>PayloadIdentifier</key>
            <string>MCXToProfile.9c24d6b3-6233-4a08-a48d-9068f4f76cf0.alacarte.customsettings.2476221c-1870-4f3e-8c52-52386029c4cf</string>
            <key>PayloadEnabled</key>
            <true/>
            <key>PayloadUUID</key>
            <string>2476221c-1870-4f3e-8c52-52386029c4cf</string>
            <key>PayloadDisplayName</key>
            <string>Blocks all apps in the ~/ directory./string>
            <key>familyControlsEnabled</key>
            <true/>
            <key>pathBlackList</key>
            <array>
                <string>/path/to/an.app</string>
                <string>/path/to/asecond.app</string>
            </array>
        </dict>
    </array>
</dict>
</plist>

Crear el LaunchDaemon

Nota: Usted debe ser un administrador para hacer esto.

Guarde el archivo siguiente en /Library/LaunchDaemons/

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>Label</key>
        <string>com.PlzUpvoteMy.answer</string>
        <key>ProgramArguments</key>
        <array>
            <string>/usr/bin/open</string>
            <string>-W</string>
            <string>**/path/to/application.app**</string>
        </array>
        <key>RunAtLoad</key>
        <true/>
        <key>StartCalendarInterval</key>
        <!--- Creds to @Allan for Calendar Interval -->
        <!--  Weekdays are 1 - 5; Sunday is 0 and 7   -->
    <array>
        <dict>
            <key>Weekday</key>
            <integer>5</integer>
            <key>Hour</key>
            <integer>12</integer>
            <key>Minute</key>
            <integer>01</integer>
        </dict>

        <dict>
            <key>Weekday</key>
            <integer>6</integer>
            <key>Hour</key>
            <integer>00</integer>
            <key>Minute</key>
            <integer>00</integer>
        </dict>
    </array>
        <key>UserName</key>
        <string>**UserToBlock**</string>
    </dict>
</plist>

Cambiar los permisos con el comando siguiente:

sudo chown root:wheel /Library/LaunchDaemons/com.MyName.plist

Carga el Demonio

Nota: Usted debe ser administrador para hacer esto.

Para iniciar el demonio, use este comando:

sudo launchctl load /Library/LaunchDaemons/com.MyName.plist 

El programa buscará las aplicaciones cada 5 segundos y cerca de ellos si se están ejecutando.

Para detener el Demonio de usar este comando

sudo launchctl unload /Library/LaunchDaemons/com.MyName.plist 

Aplaudo A Ti Mismo

  1. Aplaudo a ti mismo

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X