การเปิดแอปในเชลล์สคริปต์ด้วย sudo


1

ฉันพยายามเปิดแอปที่ฟังพอร์ต 25 ในเชลล์สคริปต์ เพื่อที่จะฟังพอร์ต 25 ผมจำเป็นต้องเรียกใช้ app sudoกับ ดังนั้นฉันจึงลองทำสิ่งต่อไปนี้:

sudo open appThatNeedsPort25

มันถามรหัสผ่านของฉันและเปิดแอพ ปัญหาคือแอพไม่ได้ทำงานเหมือนรูทดังนั้นจึงไม่สามารถฟังพอร์ต 25 ...

ฉันต้องทำอย่างไรเพื่อเปิดแอปจากเชลล์สคริปต์เพื่อให้สามารถฟังพอร์ต 25 ได้


นี่เป็นแอป GUI หรือเพียงปฏิบัติการ Unix หรือไม่
ทำเครื่องหมาย

แอป GUI มีโหมดคอนโซล แต่เป็นคอนโซลแบบโต้ตอบ
at 01

คำตอบ:


0

sudo -b ทำให้แอปพลิเคชันทำงานในพื้นหลัง

sudo -b appThatNeedsPort25

ซึ่งแตกต่างจากsudo appThatNeedsPort25 &sudo ตัวเองจะทำงานในเบื้องหน้าดังนั้นคุณจะไม่มีปัญหากับพรอมต์รหัสผ่าน โปรดทราบว่า sudo ยังมี-Aตัวเลือกให้ทำการขอรหัสผ่านผ่าน GUI แทนในเทอร์มินัลคุณสามารถใช้สิ่งนี้เมื่อsudoไม่ได้เรียกใช้จากเทอร์มินัล


0

เพียงลอง sudo appthatneedsport25 ไม่จำเป็นต้องใช้ open เมื่อจัดการกับ bash หรือเชลล์สคริปต์ ถ้ามันเป็นสคริปต์ที่ถูกตีความ (หลาม ruby ​​ฯลฯ ) และมันไม่ได้ถูกตั้งค่าเป็นปฏิบัติการคุณสามารถทำ sudo python scriptname ได้ตลอดเวลา


> /dev/null 2>&1 &อืมโอเคผมสามารถทำงานในพื้นหลังโดยท้าย ฉันเดาว่าไม่ได้ขอรหัสผ่านให้ฉันเพราะฉันเล่นกับ sudo ... ความกังวลของฉันกำลังเรียกใช้บางอย่างในพื้นหลังด้วย&จะมีปัญหาเมื่อฉันขอรหัสผ่านด้วย sudo ..
at01

มันไม่ควรเพราะจะได้รับ privs เมื่อคุณเรียกใช้และส่วนที่เหลือจะถูกเปลี่ยนเส้นทางไปยังไม่มีอะไรในจุดนี้ แอปพลิเคชันนี้ต้องการข้อมูลจากคุณในอนาคตหรือไม่ คุณบอกเราได้ไหมว่ามันคืออะไรและใช้เพื่ออะไร
ConstantineK

มันเป็นเซิร์ฟเวอร์ smtp ปลอมแปลงเพื่อวัตถุประสงค์ dev ดังนั้นฉันจึงลองใช้หลังจากที่รหัสผ่าน sudo จดจำการหมดเวลาแล้วและจะแสดงเพียง 3 รหัสผ่านแจ้งและออก ฉันเดาว่าฉันจะต้องเรียกใช้แอปจำลองด้วย sudo ก่อน ...
at01

หากคุณต้องการเรียกใช้โดยไม่ต้องขอรหัสผ่านใช่แล้วจะต้องเรียกใช้แอปล่วงหน้าเพื่อแคช แต่ทำไมไม่ใส่รหัสผ่านหลังจากคุณเริ่มเซิร์ฟเวอร์ smtp
ConstantineK

ปัญหาคือสคริปต์ที่รันแอพของฉันเพียงแค่หยุดทำงาน sudo appname &คุณไม่สามารถทำ การรันในพื้นหลังไม่ได้ให้โอกาสคุณป้อนรหัสผ่านของคุณ
at01

0

ใช้ sudo open -a appThatNeedsPort25


ฉันได้รับข้อผิดพลาดนี้:LSOpenURLsWithRole() failed for the application DevNullSmtp.jar with error -10810.
01

ลองsudo open -a /path/to/Application.app
styfle

0

ในฐานะทางเลือก (ไม่ปลอดภัยเล็กน้อย) เพื่อ sudo เพิ่มคีย์ ssh ของคุณให้กับผู้ใช้รูทของคุณจากนั้นคุณสามารถทำ 'ssh root @ localhost appThatNeedsPort25'

ในครั้งแรกที่คุณทำเช่นนี้มันอาจพร้อมท์ให้คุณใส่ข้อความรหัสผ่านของคีย์ ssh แต่หลังจากนั้นมันจะถูกแคชจนกว่าคุณจะรีบูต

หากเป็นการเพิ่มประสิทธิภาพเพิ่มเติมให้เพิ่มไฟล์นี้ลงในไฟล์ ~ / .ssh / config ของคุณ:

Host root
    Hostname 127.0.0.1
    User root

จากนั้นคุณสามารถพิมพ์ 'ssh root appThatNeedsPort25' แทน

ฉันได้ทำเคล็ดลับ 'ssh root' นี้มานานหลายปีแล้วและฉันได้บันทึกรหัสผ่านของฉันอีกครั้งนับไม่ถ้วน :-)


จริง ๆ แล้วฉันต้องการพิมพ์รหัสผ่านของฉันในกรณีนี้
at 01

0

คุณทำเช่นนี้

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

อีกทางเลือกหนึ่ง

#   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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.