Jak otworzyć skrypt powłoki w nowym oknie terminala i uruchomić go z uprawnieniami administratora


3

Muszę programowo otworzyć skrypt powłoki w oknie terminala i uruchomić go z uprawnieniami administratora. Używam os Javascript, ponieważ wyświetla wygodny monit o login / hasło administratora.

Obecnie używam tego:

osascript -e 'do shell script "open -a Terminal \"'"$appDir"'\"" with administrator privileges'

Problem polega na tym, że nawet po wprowadzeniu poświadczeń w wierszu poleceń OS X nowo otwarty skrypt będzie błagał o hasło przy pierwszym poleceniu sudo.

Jak przekazać dane logowania administratora do otwartego skryptu?


Czy nie możesz uruchomić skryptu wymagającego bezpośrednio uprawnień administratora (zamiast używać Terminalu jako pośrednika)?
— nohillside

Nie, ponieważ uruchomienie skryptu bezpośrednio wykonuje go w tle. Potrzebuję okna Terminal do interakcji z użytkownikiem.
— DavidD

Odpowiedzi:


2

Próbowałbym napisać prosty skrypt:

#!/bin/bash
sudo /usr/bin/id

zapisz to jako something.command, zmień jego uprawnienia na wykonywalne za pomocą chmod +x, a następnie uruchom to z AppleScript za pomocą

osascript -e 'do shell script "open -a Terminal ./something.command"'

Zamiast /usr/bin/id możesz wywołać dowolny skrypt, który musisz uruchomić z uprawnieniami administratora.

EDYTOWAĆ:

To zadziała:

osascript -e 'do shell script "sudo /Applications/Utilities/Terminal.app/Contents/MacOS/Terminal" with administrator privileges'

Dzięki, ale jest to podobne do obecnego stanu: coś.polecenie monituje o hasło, którego staram się unikać. Chciałbym mieć okno zachęty do OS X, które pozwala na wejście na przykład innego użytkownika z uprawnieniami administratora. Osascript oferuje taką funkcjonalność z „uprawnieniami administratora”.
— DavidD

1
Ostatnia edycja zawiera rozwiązanie
— Brethil

Dziękuję Brethil, twoja edycja załatwiła sprawę. Skończyło się na tej linii: osascript -e 'do shell script "sudo /Applications/Utilities/Terminal.app/Contents/MacOS/Terminal \"'"$appDir"'\"" with administrator privileges'. Uprawnienia administratora zadane przez okno dialogowe OS X zostały pomyślnie przekazane do wykonanego skryptu.
— DavidD
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.