Ich habe diese Skriptzeilen von meinem ISP:
sudo bash
echo "plugin L2TP.ppp">>/etc/ppp/options
echo "l2tpnoipsec">>/etc/ppp/options
Es funktioniert, wenn ich Zeile für Zeile in das Terminal einfüge. Ich möchte eine * .command-Datei erstellen und per Doppelklick ausführen. Aber alles was ich bekomme ist eine Passwortabfrage und dann ein leeres Bash-Fenster. Die resultierende "options" -Datei ist leer.
Ich habe es versucht:
#!/bin/bash
echo "plugin L2TP.ppp">>/etc/ppp/options
echo "l2tpnoipsec">>/etc/ppp/options
Ich bekomme:
/ etc / ppp / options: Berechtigung verweigert
Ich denke, ich muss einen Befehl verwenden, um Root-Rechte von innerhalb der Bash zu erhalten.
Antworten:
Nehmen Sie das Skript, das Sie erstellt haben:
Speichern Sie es in Ihrem Ausgangsverzeichnis oder in einem Skriptverzeichnis in Ihrem Ausgangsverzeichnis unter dem Namen l2tp.sh. Lassen Sie die Ausführung zu (schreiben Sie diesen Befehl in Terminal):
So führen Sie die Datei mit sudo aus (Root-Rechte):
Methode 1. Im Terminaltyp:
Methode # 2. Erstellen Sie eine Datei run_l2tp.command mit folgendem Inhalt:
Lassen Sie es ausführen:
Wenn Sie auf run_l2tp.command doppelklicken und das Kennwort eingeben, wird die Datei l2tp.sh mit Root-Rechten ausgeführt.
Einige Notizen:
quelle
Speichere das:
auf Ihrem Desktop in einer Datei mit dem Namen
script.sh
.Öffnen Sie ein Terminalfenster und geben Sie Folgendes ein:
Geben Sie Ihr Kennwort ein, wenn Sie dazu aufgefordert werden, und alle Befehle in der Datei werden mit Superuser-Berechtigungen ausgeführt.
quelle
Wenn Sie aus Sicherheitsgründen nicht möchten, dass ein Benutzer Ihres Systems das Skript ausführt, sondern zur Eingabe eines Administratorkennworts aufgefordert wird, können Sie das Shell-Skript auch speichern und dann das Programm verwenden AppleScript Editor zum Erstellen eines AppleScript.
Das AppleScript wäre ein Einzeiler
do shell script «your script's name here» with administrator privileges
. Speichern Sie das Skript als Anwendung. Wenn Sie darauf klicken, werden Sie nach einem Administratorkennwort gefragt. Führen Sie dann das Shell-Skript mit Administratorrechten aus.Ersetzen Sie dies natürlich durch
«your script's name here»
den Pfad zu Ihrem Skript.quelle
Das Problem ist, dass Sie, wenn Sie es von der Befehlszeile aus tun,
bash
unter beginnensudo
und dann die nächsten beiden Befehle an sendenbash
, nicht an die ursprüngliche Shell. (Das Zeichen ist, dass Sieexit
zweimal müssen)Wenn Sie dies in einem Skript tun, wird der
bash
Befehl nie beendet, sodass die nächsten beiden Befehle niemals ausgeführt werden.Es ist nicht so elegant wie die AppleScript-Lösung, aber wenn Sie dies als Skript über die Befehlszeile ausführen, lautet das Äquivalent:
Wenn wir die io-Umleitung (das
>>
Bit) nicht benötigen , können wir den Befehl einfach direkt über aufrufen,sudo
ohne densudo sh -c
Trick zu benötigen . (und beachte, dass ich das Argument zitieren musste, umsh -c
zu verhindern, dass das Echo als root ausgeführt wird, aber die Datei als ursprünglicher Benutzer angehängt wird.)Es wird als ein Werk
.command
aus dem Finder - Datei, aber es wird ein Terminal - Fenster und fragt nach Ihrem Passwort bringen, und wenn sie richtig eingegeben, werden die Befehle ausgeführt werden . (Vorausgesetzt, Sie haben sich kürzlich nicht authentifiziert fürsudo
... Wenn ja, wird es ohne Aufforderung ausgeführt.)quelle