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

1

Estoy intentando 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 . Así que 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?

    
pregunta at01 27.04.2011 - 23:54

5 respuestas

0

sudo -b hace que la aplicación Ejecutar 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 opción -A para hacer que solicite una contraseña a través de una GUI en lugar de en el terminal, puede usar esto cuando sudo no se está ejecutando desde un terminal.

    
respondido por el Gilles 24.07.2011 - 14:47
0

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

    
respondido por el ConstantineK 27.04.2011 - 23:57
0

usa sudo open -a appThatNeedsPort25

    
respondido por el Am1rr3zA 27.04.2011 - 23:58
0

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

La primera vez que lo hagas puede pedirte la contraseña de tu clave ssh, pero luego se almacenará en caché hasta que reinicies.

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

Host root
    Hostname 127.0.0.1
    User root

Luego, simplemente puede escribir 'ssh root appThatNeedsPort25' en su lugar.

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

    
respondido por el Darren Greaves 28.04.2011 - 00:24
0

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

    
respondido por el Sergei 28.05.2014 - 15:47

Lea otras preguntas en las etiquetas