Saya mencoba membuka aplikasi yang mendengarkan port 25 dalam skrip shell. Untuk mendengarkan port 25, saya harus menjalankan aplikasi dengan sudo
. Jadi saya mencoba yang berikut:
sudo open appThatNeedsPort25
Ia meminta kata sandi saya dan membuka aplikasi. Masalahnya adalah aplikasi TIDAK dijalankan sebagai root, sehingga tidak dapat mendengarkan port 25 ...
Apa yang harus saya lakukan untuk membuka aplikasi dari skrip shell sehingga dapat mendengarkan port 25?
Jawaban:
sudo -b
membuat aplikasi berjalan di latar belakang.Berbeda dengan
sudo appThatNeedsPort25 &
, sudo sendiri akan berjalan di latar depan, jadi Anda tidak akan memiliki masalah dengan kata sandi. Perhatikan bahwa sudo juga memiliki-A
pilihan untuk membuatnya meminta kata sandi melalui GUI bukan di terminal, Anda dapat menggunakan ini saatsudo
tidak berjalan dari terminal.sumber
Coba saja sudo appthatneedsport25, tidak perlu menggunakan buka saat berurusan dengan skrip bash atau shell. Jika itu adalah skrip yang diinterpretasikan (python ruby dll) dan itu tidak diatur ke executable, Anda selalu dapat melakukan sudo python scriptname.
sumber
> /dev/null 2>&1 &
. Saya kira itu tidak meminta saya untuk kata sandi karena saya telah bermain dengan sudo ... perhatian saya adalah menjalankan sesuatu di latar belakang&
akan memiliki masalah ketika meminta saya untuk kata sandi dengan sudo ..sudo appname &
. Menjalankannya di latar belakang tidak memberi Anda kesempatan untuk memasukkan kata sandi.menggunakan
sudo open -a appThatNeedsPort25
sumber
LSOpenURLsWithRole() failed for the application DevNullSmtp.jar with error -10810.
sudo open -a /path/to/Application.app
Sebagai alternatif (sedikit tidak aman) untuk menambahkan sudo kunci ssh Anda ke pengguna root Anda maka Anda dapat melakukan 'ssh root @ localhost appThatNeedsPort25'.
Pertama kali Anda melakukan ini mungkin meminta Anda untuk frasa sandi ssh Anda, tetapi setelah itu di-cache sampai Anda reboot.
Sebagai optimasi lebih lanjut, tambahkan ini ke file ~ / .ssh / config Anda:
Maka Anda cukup mengetik 'ssh root appThatNeedsPort25' sebagai gantinya.
Saya telah melakukan trik 'ssh root' ini selama bertahun-tahun dan itu menyelamatkan saya tak terhitung menit mengetik ulang kata sandi saya. :-)
sumber
Anda melakukannya seperti ini
sudo /Applications/TextEdit.app/Contents/MacOS/TextEdit /etc/hosts
kalau tidak
$ sudoapp /Applications/TextEdit.app /etc/hosts
sumber