aprire un'app in uno script di shell con sudo

1

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

sudo open appThatNeedsPort25

Mi chiede la mia password e apre l'app. Il problema è che l'app NON viene eseguita come root, quindi non è in grado di ascoltare la porta 25 ...

Che cosa devo fare per aprire un'app da uno script di shell in modo che possa ascoltare la porta 25?

    
posta at01 27.04.2011 - 23:54
fonte

5 risposte

0

sudo -b rende l'applicazione eseguito in background.

sudo -b appThatNeedsPort25

A differenza di sudo appThatNeedsPort25 & , sudo stesso verrà eseguito in primo piano, quindi non avrai problemi con la sua richiesta di password. Nota che sudo ha anche un'opzione -A per fare in modo che chieda una password attraverso una GUI invece che nel terminale, puoi usarla quando sudo non è in esecuzione da un terminale.

    
risposta data 24.07.2011 - 14:47
fonte
0

Basta provare sudo appthatneedsport25, non c'è bisogno di usare open quando si tratta di bash o script di shell. Se è uno script interpretato (python ruby ecc.) E non è impostato su eseguibile, puoi sempre fare sudo python scriptname.

    
risposta data 27.04.2011 - 23:57
fonte
0

usa sudo open -a appThatNeedsPort25

    
risposta data 27.04.2011 - 23:58
fonte
0

Come alternativa (leggermente insicura) a sudo aggiungi la tua chiave ssh al tuo utente root, allora puoi fare 'ssh root @ localhost appThatNeedsPort25'.

La prima volta che lo fai, potresti richiedere la passphrase della chiave ssh, ma dopo di che viene memorizzato nella cache fino al riavvio.

Come ulteriore ottimizzazione, aggiungi questo al tuo file ~ / .ssh / config:

Host root
    Hostname 127.0.0.1
    User root

Quindi puoi semplicemente digitare 'ssh root appThatNeedsPort25' invece.

Ho fatto questo trucco "ssh root" per anni e mi ha salvato un numero infinito di minuti per ridigitare la mia password. : -)

    
risposta data 28.04.2011 - 00:24
fonte
0

Lo fai in questo modo

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

    
risposta data 28.05.2014 - 15:47
fonte

Leggi altre domande sui tag