1 votos

abrir una aplicación en un shell script con sudo

Estoy tratando de abrir una aplicación que escucha el puerto 25 dentro de un shell script. Para escuchar el puerto 25, necesito ejecutar la aplicación con sudo . Así que probé lo siguiente:

sudo open appThatNeedsPort25

Me pide mi contraseña y abre la aplicación. El problema es que la aplicación NO se ejecuta como Root, por lo que no puede escuchar el puerto 25...

¿Qué hago para abrir una aplicación desde un shell script para que pueda escuchar el puerto 25?

0 votos

¿Es una aplicación con interfaz gráfica de usuario o sólo un ejecutable Unix?

0 votos

GUI, tienen un modo de consola, pero es una consola interactiva

0voto

Zac Puntos 89

Sólo prueba sudo appthatneedsport25, no es necesario usar open cuando se trata de bash o shell scripts. Si se trata de un scriptsscript interpretadoscripts (Python ruby, etc) y no está configurado como ejecutable, siempre se puede hacer sudo Python scriptname.

0 votos

Hmm, vale, puedo ejecutarlo en segundo plano añadiendo > /dev/null 2>&1 & . Supongo que no me pide la contraseña porque he estado jugando con sudo... mi preocupación es ejecutar algo en segundo plano con & tendrá problemas cuando me pida una contraseña con sudo..

0 votos

No debería, porque obtiene esos privilegios cuando la ejecutas, y el resto se redirige a nada en este momento. ¿Esta aplicación requiere una entrada futura de usted? ¿Puedes decirnos qué es y para qué la usas?

0 votos

Es un servidor smtp ficticio para fines de desarrollo. Así que lo probé después de que el recordatorio de la contraseña de sudo se agotó y sólo presenta 3 solicitudes de contraseña y sale. Supongo que tengo que ejecutar una aplicación ficticia primero con sudo...

0voto

gary Puntos 4856

Utilice sudo open -a appThatNeedsPort25

0 votos

Me sale este error: LSOpenURLsWithRole() failed for the application DevNullSmtp.jar with error -10810.

0 votos

Prueba con sudo open -a /path/to/Application.app

0voto

WalterJ89 Puntos 175

Como una alternativa (un poco insegura) a sudo agrega tu clave ssh a tu usuario Root entonces puedes hacer 'ssh Root@localhost appThatNeedsPort25'.

La primera vez que lo hagas puede pedirte la frase de contraseña de tu clave ssh, pero después se guarda en la caché hasta que reinicies.

Como optimización adicional, añada esto a su archivo ~/.ssh/config:

Host root
    Hostname 127.0.0.1
    User root

Entonces puedes escribir 'ssh Root appThatNeedsPort25' en su lugar.

Llevo años haciendo este truco de 'ssh Root' y me ha ahorrado incontables minutos de volver a escribir mi contraseña. :-)

0 votos

En realidad, prefiero escribir mi contraseña en este caso

0voto

staffan Puntos 3299

sudo -b hace que la aplicación se ejecute en segundo plano.

sudo -b appThatNeedsPort25

A diferencia de lo que ocurre con sudo appThatNeedsPort25 & El programa sudo se ejecutará en primer plano, por lo que no tendrás problemas con su solicitud de contraseña. Tenga en cuenta que sudo también tiene un -A para que pida una contraseña a través de una interfaz gráfica de usuario en lugar de en el terminal, puede utilizarlo cuando sudo no se ejecuta desde un terminal.

0voto

Sergei Puntos 683

Lo haces así

sudo /Applications/TextEdit.app/Contents/MacOS/TextEdit /etc/hosts

Alternativamente

#   sudoapp: Runs .app with root privileges
#   --------------------------------------------------------------------
    sudoapp () {
        sudo "$1/Contents/MacOS/$(defaults read "$1/Contents/Info.plist" CFBundleExecutable)" $2
    }

$ sudoapp /Applications/TextEdit.app /etc/hosts

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