Ich versuche, eine App zu öffnen, die Port 25 in einem Shell-Skript abhört. Um Port 25 zu hören, muss ich die App mit ausführen sudo
. Also habe ich folgendes versucht:
sudo open appThatNeedsPort25
Es fragt mich nach meinem Passwort und öffnet die App. Das Problem ist, dass die App NICHT als root ausgeführt wird und daher Port 25 nicht abhören kann ...
Wie öffne ich eine App über ein Shell-Skript, damit sie Port 25 abhören kann?
Antworten:
sudo -b
Lässt die Anwendung im Hintergrund laufen.Im Gegensatz zu "with"
sudo appThatNeedsPort25 &
wird "sudo" im Vordergrund ausgeführt, sodass Sie keine Probleme mit der Kennworteingabeaufforderung haben. Beachten Sie, dass sudo auch die-A
Option hat, über eine GUI nach einem Kennwort zu fragen, anstatt im Terminal. Sie können dies verwenden, wennsudo
es nicht von einem Terminal aus ausgeführt wird.quelle
Probieren Sie einfach sudo appthatneedsport25 aus, und verwenden Sie open nicht, wenn Sie mit Bash- oder Shell-Skripten arbeiten. Wenn es sich um ein interpretiertes Skript (Python Ruby usw.) handelt und es nicht auf ausführbar eingestellt ist, können Sie immer sudo python scriptname ausführen.
quelle
> /dev/null 2>&1 &
. Ich denke, es fragt mich nicht nach einem Passwort, weil ich mit sudo gespielt habe. Mein Anliegen ist, dass im Hintergrund&
Probleme auftreten, wenn ich mit sudo nach einem Passwortsudo appname &
. Wenn Sie es im Hintergrund ausführen, haben Sie nicht die Möglichkeit, Ihr Kennwort einzugeben.verwenden
sudo open -a appThatNeedsPort25
quelle
LSOpenURLsWithRole() failed for the application DevNullSmtp.jar with error -10810.
sudo open -a /path/to/Application.app
Als (etwas unsichere) Alternative zu sudo können Sie Ihren ssh-Schlüssel zu Ihrem Root-Benutzer hinzufügen und dann 'ssh root @ localhost appThatNeedsPort25' ausführen.
Wenn Sie dies zum ersten Mal tun, werden Sie möglicherweise zur Eingabe Ihrer SSH-Passphrase aufgefordert. Danach wird die Passphrase zwischengespeichert, bis Sie einen Neustart durchführen.
Fügen Sie als weitere Optimierung Folgendes zu Ihrer ~ / .ssh / config-Datei hinzu:
Dann können Sie stattdessen einfach 'ssh root appThatNeedsPort25' eingeben.
Ich mache diesen 'ssh root'-Trick seit Jahren und es hat mir unzählige Minuten gespart, mein Passwort erneut einzugeben. :-)
quelle
Du machst es so
sudo /Applications/TextEdit.app/Contents/MacOS/TextEdit /etc/hosts
Alternative
$ sudoapp /Applications/TextEdit.app /etc/hosts
quelle