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?
Respuestas:
sudo -b
hace que la aplicación se ejecute en segundo plano.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-A
opción para pedirle una contraseña a través de una GUI en lugar de hacerlo en el terminal, puede usar esto cuandosudo
no se ejecuta desde un terminal.fuente
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.
fuente
> /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 mesudo appname &
. Ejecutarlo en segundo plano no le da la oportunidad de ingresar su contraseña.utilizar
sudo open -a appThatNeedsPort25
fuente
LSOpenURLsWithRole() failed for the application DevNullSmtp.jar with error -10810.
sudo open -a /path/to/Application.app
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:
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. :-)
fuente
Lo haces asi
sudo /Applications/TextEdit.app/Contents/MacOS/TextEdit /etc/hosts
Alternativamente
$ sudoapp /Applications/TextEdit.app /etc/hosts
fuente