Tamam çalışan, uzun ve karmaşık bir bash betiğim var, ancak dağıtım işlemimi otomatikleştirmeye çalışıyorum ve bu noktada boşuna gidiyorum.
Senaryoyu LaunchAgent olarak problemsiz olarak çalıştırabilirim, fakat elbette açılışta arka planda olur. Bu yüzden senaryoyu kesmem gerekirse herhangi bir düğmeye basabileceğim senaryo başında bir duraklama var.
Buradaki sorun, bir Terminal penceresinde açılacak olan betiğe ihtiyacım olması, iptal etmek veya devam etmek için düğmeye basabilmem. Sorunumun başladığı yer burası.
Komut dosyasında birçok sudo komutu var. Aşağıdakini yarattım .plistve elle yükleyebilirim. Çalışır ve betiği yükler ve her şey çalışır. Ancak, önyüklemede hiçbir şey yapmaz ve yalnızca Konsol'daki hata kodu 1 ile çıkar.
Onu /Library/LaunchAgentsve içine koymayı denedim /Library/LaunchDaemons. Temelde terminal penceresini root olarak açması gerekir, böylece betiğin içindeki tüm komutlar şifreyi manuel olarak girmeme gerek kalmadan root olarak çalışacaktır.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.deecies.first</string>
<key>ProcessType</key>
<string>Interactive</string>
<key>ProgramArguments</key>
<array>
<string>open</string>
<string>-a</string>
<string>terminal</string>
<string>/Users/admin/first-boot.command</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
Belirtmeyi /usr/bin/openve tam yolu da denedim Terminal.app, ama boşuna. Önce sudo string eklemeye çalıştım, /usr/bin/sudoama hiçbiri de.
Yerleştirildiğinde açılmasını sağlayan bir Terminal penceresi açmayı başardım /Library/LaunchAgents, ancak komut dosyasındaki tüm komutlar için "izin verilmez" aldığım için Terminal'i veya komut dosyasını kök olarak açmıyor gibi görünüyor Bu sudo gerektirir.
/etc/sudoersbuna izin vermek için dosyanızı zaten düzenlediniz mi? Çünkü varsayılan olarak, sudo oturum açtıktan sonra ilk kez bir şifre gerektiriyor; daha sonra şifreyi tekrar girmeniz gerekmeyen bir zaman aşımı süresi vardır.