321 votes

L'exécution de script lors de la connexion mac

Je me demandais si quelqu'un est capable de m'aider à obtenir un .sh fichier pour l'exécuter, quand je me connecte à mon compte sur mon ordinateur. Je suis sous Mac OS X 10.6.7.

J'ai un fichier "Example.sh" que je veux lancer, quand je me connecte sur mon ordinateur. Je n'ai pas de problème d'exécution lorsque je suis déjà connecté, mais je veux que cela s'exécuter automatiquement.

Les gens disent pour l'ajouter à la shell de connexion de fichier, mais je ne sais pas où c'est. Un peu d'aide s'il vous plaît. Merci d'avance

440voto

jm666 Points 17312

Vous pouvez:

  • début d'Automator.app
  • Sélectionnez "Application"
  • cliquez sur "Afficher la bibliothèque" dans la barre d'outils (si ce n'est caché)
  • Ajouter "Exécuter le script shell" (à partir de la Actions/Utilitaires)
  • Copier et coller le script dans la fenêtre
  • Tester
  • Enregistrer quelque part, par exemple, vous pouvez faire un dossier "Applications" dans votre MAISON (vous obtiendrez un your_name.app)

  • Allez dans les Préférences Système -> Comptes -> éléments de Connexion

  • Ajouter cette application
  • test & done ;)

EDIT:

J'ai récemment acquis une "Bonne réponse" badge pour cette réponse. Même si ma solution est simple et de travail, la façon la plus propre à exécuter n'importe quel programme ou d'un script shell au moment de la connexion est décrite dans @trisweb réponse, à moins que, vous voulez de l'interactivité.

Avec automator solution, vous pouvez faire des choses comme suivant: automator screenshot login application

donc, demander à l'exécution d'un script ou quitter l'application, de demander des mots de passe, l'exécution d'autres processus automator au moment de la connexion, à condition d'exécuter les applications au moment de la connexion, et ainsi de suite...

423voto

trisweb Points 2432

Le ci-dessus (actions Automator) et d'autres méthodes (LoginHook) ont des limites et, personnellement, je vous recommandons d'utiliser launchd à la place.

Il suffit de faire une launchctl démon. Vous aurez le contrôle total sur tous les aspects du script. Vous pouvez exécuter une seule fois ou de le garder vivant comme un démon. C'est vraiment la bonne façon de le faire dans la plupart des cas.

  1. Créer un .plist fichier selon les instructions dans le Dev Apple docs ici.
  2. Place dans ~/Library/LaunchAgents
  3. Connectez-vous (ou exécuter manuellement par l'intermédiaire de launchctl load [filename.plist]

Poster parce que je souhaite que j'avais connu cela avant d'essayer les autres méthodes fiables. Launchctl est la bonne façon.

Pour en savoir plus sur launchd, l'article de wikipedia est assez bonne et décrit le système et ses avantages par rapport à d'autres systèmes plus anciens.


Comme demandé, voici le spécifique fichier plist pour exécuter un script à l'ouverture de session.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//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.loginscript</string>
   <key>Program</key>
   <string>/path/to/executable/script.sh</string>
   <key>RunAtLoad</key>
   <true/>
</dict>
</plist>

Remplacer le après le Programme clé avec votre commande souhaitée.

Enregistrer en tant que ~/Library/LaunchAgents/com.user.loginscript.plist

Exécutez launchctl load ~/Library/LaunchAgents/com.user.loginscript.plist et de se déconnecter/en de test (ou test directement, exécutez launchctl start com.user.loginscript)

Queue /var/log/system.log pour les messages d'erreur.

La clé, c'est que c'est spécifique à un Utilisateur launchd entrée, de sorte qu'il sera exécuté sur la connexion pour l'utilisateur donné. Système spécifique de lancer les démons (placé en /Library/LaunchAgents) sont exécutés au démarrage.

Si vous souhaitez un script à exécuter lors de la connexion pour tous les utilisateurs, je crois LoginHook est votre seule option, et c'est probablement la raison pour laquelle elle existe.

52voto

anubhava Points 172509
  1. Créer votre script shell en tant que login.sh dans votre $HOME dossier.

  2. Collez le script d'une ligne dans l'Éditeur de Script:

    do shell script "$HOME/login.sh"

  3. Ensuite de l'enregistrer comme une application.

  4. Enfin ajouter l'application à vos éléments de connexion.

Si vous voulez faire de la sortie de script visual, vous pouvez passer à l'étape 2 pour ceci:

tell application "Terminal"
  activate
  do script "$HOME/login.sh"
end tell

Si plusieurs commandes sont besoin de quelque chose de ce genre peut être utilisé:

tell application "Terminal"
  activate
  do script "cd $HOME"
  do script "./login.sh" in window 1
end tell

2voto

svth Points 694

Vous pouvez également en faire une application pour Mac OS X à partir de votre script à l'aide de Platypus:

http://sveinbjorn.org/platypus

Puis ajouter l'application à vos éléments de connexion.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X