Automatyzuję instalację Maca za pomocą marionetki. W ramach tego muszę zainstalować kilka programów w formacie .dmg.
Do ich zamontowania używam następujących elementów:
sudo /usr/bin/hdiutil mount -plist -nobrowse -readonly -quiet -mountrandom /tmp Program.dmg
Problem polega na tym, że niektóre pliki .dmg są dostarczane z dołączoną licencją, więc skrypt nie może zaakceptować licencji. (Podczas biegania z marionetką nie ma standardowego wejścia / wyjścia, więc nie mogę ręcznie zatwierdzić, aby kontynuować).
Czy istnieje sposób wstępnego zatwierdzenia lub wymuszenia zatwierdzenia licencji?
Odpowiedzi:
Jeśli masz GUI i jesteś w stanie wykonywać dwa połączenia z linii poleceń równolegle, możesz użyć
i
ten ostatni wykonuje następujący AppleScript:
W
bash
, jestem w stanie pisaćźródło
Działa to dla mnie, gdy napotkałem plik .dmg zawierający umowę EULA, którą chciałem zainstalować za pomocą wiersza polecenia bez interakcji użytkownika ...
(uwaga: nie jestem dość pewny wszystkie powyższe opcje są potrzebne do obejścia EULA, takie jak
-nobrowse
,-noverify
,-noautoopen
,-mountpoint
jednak użyłem ich i nie testowałem bez nich, więc nie chciałem zastrzeżenia coś, co ja. nie testowałem.)Skończyło się na katalogu z
gdzie
right_here/
zawierała treśćfoo.dmg
monitu bez konieczności uzyskiwania monitu.Pamiętaj, aby odłączyć, gdy skończysz!
Aby uzyskać więcej informacji: hdiutil (1) Mac OS X Podręcznik strony .
YMMV
źródło
Jeśli po prostu wymaga wpisania „Y”, potokuj polecenie tak w poleceniu hdiutil:
To będzie emulować naciśnięcie „y” i powrót do wiersza poleceń.
Aby wpisać coś innego, po prostu umieść to w wierszu polecenia jako parametr:
To spowoduje wpisanie „accept” w skrypcie.
Zauważ, że jeśli skrypt wiele razy pyta o dane wejściowe, polecenie tak umieści wiele wpisów. Możesz zobaczyć wynik taki jak „zepsuty potok” - oznacza to po prostu, że polecenie, które podłączyłeś do wyjścia, gdy „tak” wciąż wysyłało dane wejściowe.
źródło
Niedawno natknąłem się na DMG z licencją EULA i naprawdę mnie to denerwowało, ponieważ nie mogłem tego zrobić. Zorientowałem się, że jeśli przekonwertuję DMG na CDR, ominie umowę EULA dotyczącą montowania CDR.
Oto co zrobiłem:
Mam nadzieję że to pomoże.
źródło
yes | hdiutil...
rozwiązania, które wiszą na mnie, kiedy nazywa się ze skryptu Pythona do jakiegoś szalonego powodu.Jeśli masz wielostronicową umowę EULA, którą musisz zaakceptować, możesz przejść do części akceptując, umieszczając
q
przed resztą polecenia akceptacji (ponieważ wszystko, czego potrzebujesz, to zaakceptowane polecenie zakończenialess
, możesz także użyćZZ
lubQ
).Na przykład, jeśli umowa EULA wymaga wpisania a,
y
aby zaakceptować, należy uruchomić:źródło
Czy nie powinieneś używać własnych narzędzi marionetek do instalowania pakietów? Sam jestem administratorem radmind i nie znam marionetek, ale sprawdzenie na ich wiki ujawnia, że istnieje narzędzie o nazwie pkgdmg, które może zrobić równowartość tego, co próbujesz osiągnąć.
http://projects.puppetlabs.com/projects/puppet/wiki/Puppet_Mac_Osx#packagepkgdmg
źródło