abrir una aplicación en un script de shell con sudo


1

Estoy tratando de abrir una aplicación que escucha el puerto 25 dentro de un script de shell. Para escuchar el puerto 25, necesito ejecutar la aplicación con sudo. Entonces intenté 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é debo hacer para abrir una aplicación desde un script de shell para que pueda escuchar el puerto 25?


¿Es esta una aplicación GUI o simplemente un ejecutable de Unix?
Mark

Aplicación GUI, tienen un modo de consola, pero es una consola interactiva
01 de

Respuestas:


0

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

sudo -b appThatNeedsPort25

A diferencia de sudo appThatNeedsPort25 &, sudo se ejecutará en primer plano, por lo que no tendrá problemas con su solicitud de contraseña. Tenga en cuenta que sudo también tiene una -Aopción para pedirle una contraseña a través de una GUI en lugar de hacerlo en el terminal, puede usar esto cuando sudono se ejecuta desde un terminal.


0

Simplemente intente sudo appthatneedsport25, no es necesario usar open cuando se trata de scripts bash o shell. Si es un script interpretado (python ruby, etc.) y no está configurado como ejecutable, siempre puede hacer sudo python scriptname.


hmm, ok, puedo ejecutarlo en segundo plano agregando > /dev/null 2>&1 &. Supongo que no me está pidiendo una contraseña porque he estado jugando con sudo ... mi preocupación es ejecutar algo en segundo plano con &problemas cuando me
solicite

No debería, porque obtiene esos privilegios cuando lo ejecutas, y el resto de eso se redirige a nada en este momento. ¿Esta aplicación requiere aportes futuros de usted? ¿Puede decirnos qué es y para qué lo utiliza?
ConstantineK

Es un servidor smtp ficticio para fines de desarrollo. Así que lo probé después de que la contraseña de sudo recordara el tiempo de espera y solo presenta 3 solicitudes y salidas de contraseña. Supongo que primero tengo que ejecutar una aplicación ficticia con sudo ...
at01

Si desea ejecutarlo sin solicitar una contraseña, entonces sí, necesitaría ejecutar una aplicación de antemano para almacenarla en caché, pero ¿por qué no simplemente poner la contraseña después de iniciar el servidor smtp?
ConstantineK

El problema es que el script que ejecuta mi aplicación simplemente se cierra. No se puede hacer sudo appname &. Ejecutarlo en segundo plano no le da la oportunidad de ingresar su contraseña.
at01

0

utilizar sudo open -a appThatNeedsPort25


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

Pruebasudo open -a /path/to/Application.app
styfle

0

Como una alternativa (ligeramente insegura) a sudo, agregue su clave ssh a su usuario raíz y luego puede hacer 'ssh root @ localhost appThatNeedsPort25'.

La primera vez que haga esto, es posible que le solicite la frase de contraseña de la clave ssh, pero después de eso se almacena en caché hasta que reinicie.

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

Host root
    Hostname 127.0.0.1
    User root

Entonces puede simplemente escribir 'ssh root appThatNeedsPort25' en su lugar.

He estado haciendo este truco 'ssh root' durante años y me ha ahorrado innumerables minutos de volver a escribir mi contraseña. :-)


De hecho, preferiría escribir mi contraseña en este caso
01 de

0

Lo haces asi

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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.