J'ai besoin de pouvoir générer un ticket kerberos pour mon MacBook Pro à chaque fois que la machine redémarre. Je peux exécuter manuellement KINIT avec mes informations d'identification pour générer un ticket. Quelle est la meilleure façon d'automatiser ce processus ?
Réponses
Trop de publicités?Vous pouvez facilement intégrer des commandes shell dans une application (ou un service) Automator à l'aide de l'action "Run Shell script". Toutefois, cette action exécutera les commandes dans un shell non interactif (pour une explication de la différence entre les shells interactifs et non interactifs, voir l'action section pertinente du Guide avancé du script Bash. - En d'autres termes, vous n'aurez pas accès au terminal pour l'invite du mot de passe. kinit
n'en est pas conscient, votre script se bloquera). Il y a deux façons de contourner ce problème :
-
script Terminal.app pour exécuter votre commande au lieu de l'exécuter directement. Dans ce cas, vous aurez besoin d'une action "Exécuter AppleScript" à la place, contenant la commande suivante :
tell application "Terminal" to do script "kinit <options>"
qui ouvrira un nouvel onglet du Terminal en exécutant la commande donnée.
-
utiliser
kinit
's--password-file
et lui passer le mot de passe dans votre flux de travail, c'est à direecho <password> | kinit --passwordfile=STDIN <options>
Pour éviter de stocker votre mot de passe en texte clair dans le flux de travail, vous pouvez le stocker en toute sécurité dans le trousseau d'OS X et le récupérer à partir de là. Bien que cela soit possible via un shell script (le blog de TextMate a les détails sur la façon d'y parvenir - n'oubliez pas de lire les commentaires), il y a tellement de problèmes que je recommande d'utiliser un peu d'AppleScript et l'excellent livre de Daniel Jalkut Script de porte-clés utilisable app. Une fois installée, le bout d'AppleScript suivant récupérera votre mot de passe (en supposant que le nom du compte est "kinit") :
tell application "Usable Keychain Scripting" to get password of first generic item of current keychain whose account is "kinit"
Soit l'envelopper dans un
osascript
commande shell, c'est-à-direpassphrase=$(osascript -e '<command above>')
ou, comme vous utilisez Automator, ajoutez une action AppleScript, récupérez la phrase de passe à l'intérieur et passez-la au shell script.
Je veux juste ajouter quelque chose ; je n'avais pas envie de mettre mon mot de passe dans le trousseau, alors j'ai écrit un applescript rapide pour le récupérer à partir d'une invite utilisateur :
on run {input, parameters}
tell application "System Events"
set the_username to do shell script "whoami"
set the_password to "password"
display dialog "Enter password" default answer "password" buttons {"OK", "Cancel"} default button "OK" with icon 2 with title "SLAC Kerberos" with hidden answer
set the_password to text returned of the result
end tell
return {the_username, the_password}
end run
bien sûr, vous voulez probablement mettre le domaine dans votre nom d'utilisateur aussi. et puis, à partir d'un shell script vous pouvez faire quelque chose comme :
echo $2 | kinit --password-file=STDIN $1
ce qui serait bien serait de vérifier la sortie du shell script pour vérifier les mots de passe incorrects, etc.