Domanda

Sto cercando di aprire un app che ascolta la porta 25 all'interno di uno script di shell. Per ascoltare alla porta 25, ho bisogno di eseguire l'applicazione con sudo. Così ho provato il seguente:

sudo open appThatNeedsPort25

E mi chiede la password e si apre l'applicazione. Il problema è l'applicazione è non essere eseguito come root, quindi non è in grado di ascoltare la porta 25 ...

Cosa devo fare per aprire un app da uno script di shell in modo che possa in ascolto sulla porta 25?

È stato utile?

Soluzione

sudo -b rende la corsa applicazione in background.

sudo -b appThatNeedsPort25

A differenza con sudo appThatNeedsPort25 &, sudo stesso verrà eseguito in primo piano, in modo da avere problemi con la sua Richiesta password. Nota che sudo ha anche un'opzione -A per renderlo chiedere una password tramite una GUI invece che nel terminale, è possibile utilizzare questo quando sudo non è in esecuzione da un terminale.

Altri suggerimenti

Basta provare sudo appthatneedsport25, senza bisogno di usare aperta quando si tratta di bash o script di shell. Se si tratta di uno script interpretato (python ruby, ecc) ed è impostato per isnt eseguibile, si può sempre fare sudo python nomescript.

uso sudo open -a appThatNeedsPort25

A titolo di (un po 'insicuro) alternativa al sudo add vostra chiave SSH al vostro utente root allora si può fare 'ssh root @ localhost appThatNeedsPort25'.

La prima volta che si esegue questa operazione potrebbe essere richiesto per la chiave SSH passphrase, ma dopo che è memorizzato nella cache fino al riavvio.

Come ulteriore ottimizzazione aggiungere questo al vostro file ~ / .ssh / config:

Host root
    Hostname 127.0.0.1
    User root

Poi si può solo digitare 'ssh radice appThatNeedsPort25' invece.

Ho fatto questo trucco 'ssh root' per anni e mi ha salvato innumerevoli minuti di ri-digitare la password. : -)

lo fate come questo

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

In alternativa

#   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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a apple.stackexchange
scroll top