Necesito poder generar un ticket kerberos para mi MacBook Pro cada vez que se reinicia la máquina. Puedo ejecutar KINIT manualmente con mis credenciales para generar un ticket. ¿Cuál es la mejor manera de automatizar ese proceso?
Puede empaquetar fácilmente comandos de shell dentro de una aplicación (o servicio) de Automator usando la acción "Ejecutar script de Shell". Sin embargo, esto ejecutará los comandos en un shell no interactivo (para obtener una explicación de la diferencia entre shells interactivos y no interactivos, consulte la sección pertinente de la Guía avanzada de secuencias de comandos de Bash ; en pocas palabras, no tendrá acceso a la terminal para la solicitud de contraseña, y si kinit
no es consciente de esto, su secuencia de comandos se colgará). Hay dos maneras de evitar eso:
script Terminal.app para ejecutar su comando en lugar de ejecutarlo directamente. En ese caso, necesitará una acción "Ejecutar AppleScript" en su lugar, que contiene el siguiente comando:
tell application "Terminal" to do script "kinit <options>"
que abrirá una nueva pestaña de Terminal ejecutando el comando dado.
use kinit
la --password-file
opción y pásele la contraseña dentro de su flujo de trabajo, es decir
echo <password> | kinit --passwordfile=STDIN <options>
Para evitar almacenar su contraseña en texto sin formato dentro del flujo de trabajo, puede almacenarla de forma segura en el llavero de OS X y recuperarla desde allí. Aunque es posible a través de un script de shell (el blog de TextMate tiene detalles sobre cómo lograrlo ; asegúrese de leer los comentarios), hay tantas trampas que recomendaría usar un poco de AppleScript y la excelente aplicación Usable Keychain Scripting de Daniel Jalkut. . Una vez instalado, el siguiente fragmento de AppleScript recuperará su contraseña (suponiendo que el nombre de la cuenta sea "kinit"):
tell application "Usable Keychain Scripting" to get password of first generic item of current keychain whose account is "kinit"
O envuélvelo en un osascript
comando de shell, es decir
passphrase=$(osascript -e '<command above>')
o, si usa Automator, agregue una acción de AppleScript, recupere la frase de contraseña que contiene y pásela al script de shell.
Solo quiero intervenir; No me apetecía poner mi contraseña en el llavero, así que escribí un applescript rápido para recogerlo de un mensaje de usuario:
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
por supuesto, probablemente también quieras poner el dominio en tu nombre de usuario. y luego, desde un script de shell, puede hacer algo como:
echo $2 | kinit --password-file=STDIN $1
lo que sería bueno sería verificar la salida del script de Shell para verificar si hay contraseñas incorrectas, etc.
sin ladera
kinit
alguna entrada manual de su lado?tlatkovich
sin ladera
--password-file
sería una opción para ti? De lo contrario, será difícil de automatizar.tlatkovich