1 votos

Pass no funciona en "Run Shell script" de la aplicación Shortcuts

Quiero configurar un acceso directo de shell script con el comando Atajos para copiar una contraseña en mi portapapeles. El script funciona bien cuando se ejecuta manualmente desde el terminal, pero se agota cuando se ejecuta desde la aplicación Shortcuts.

Configurar

Los requisitos previos para ejecutar el script son:

brew install pass
brew install pass-otp
brew install pinentry-mac
brew install choose-gui

echo "pinentry-program /opt/homebrew/bin/pinentry-mac" > .gnpug/gpg-agent.conf
killall gpg-agent

Y necesitas al menos una contraseña en el almacén de contraseñas. Puedes añadir una ejecutando:

pass generate example.com

El script

prefix=${PASSWORD_STORE_DIR-~/.password-store}
password_files=( "$prefix"/**/*.gpg )
password_files=( "${password_files[@]#"$prefix"/}" )
password_files=( "${password_files[@]%.gpg}" )

password=$(printf '%s\n' "${password_files[@]}" | /opt/homebrew/bin/choose "$@")

[[ -n $password ]] || exit

plain=$(/opt/homebrew/bin/pass show ${password})
echo ${plain} | pbcopy

La cuestión

Ejecutar manualmente el script desde un intérprete de comandos funciona correctamente. Se abre el menú donde puedo seleccionar una contraseña y se copia correctamente en el portapapeles.

Pero ejecutar el script desde la aplicación Shortcuts no funciona. El menú de selección se abre correctamente, pero después de seleccionar una contraseña, el script se ejecuta infinitamente sin salir.

Mi suposición es que espera una entrada de contraseña para descifrar el archivo de contraseña con GPG. Cuando se ejecuta el script manualmente, la Pinentry Mac UI se abre para introducir una contraseña. Tal vez esto está roto desde dentro de la aplicación Shortcuts.

1voto

Steve Evans Puntos 155

¿Requerimiento gráfico?

¿Alguna dependencia de tu script requiere acceso al gestor de ventanas o a la sesión gráfica para funcionar? En caso afirmativo, ¿ejecuta Shortcuts su script en la carpeta sesión gráfica actual ?

Los siguientes enfoques intentan forzar que el script se ejecute dentro de la sesión gráfica actual.

Basado en la aplicación

Prueba a crear una aplicación autónoma que ejecute tu script. Consigue que esta aplicación funcione de forma consistente y, a continuación, utiliza Shortcuts.app para lanzar la aplicación resultante.

Si es necesario, la aplicación puede firmarse con código ad hoc. También puede probarse aislada de Shortcuts.

Para crear una aplicación, utilice Automator.app o script Editor.app para ejecutar el script, utilizando do shell script y Guardar como una aplicación.

Basado en terminales

Como alternativa, guarde su script como un archivo de texto con la extensión .command y abra este archivo utilizando Atajos. Esto debería lanzar Terminal.app y ejecutar el script.

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