Ich habe jetzt versucht den Befehl einfach zu starten, aber das Programm führt ihn nicht aus.
Im Terminal erhalte ich eine Eingabemaske, aber wenn ich es über die .app laufen lasse kann ich natürlich nichts angeben.Code:#!/bin/bash sudo BEFEHLKETTE sudo ...
Ergebnis 1 bis 10 von 17
- 17.01.2011, 22:50 #1Schöner von Nordhausen
Themenstarter
- Registriert
- 10.2008
- Beiträge
- 324
Shell Skript soll Passwort sicher erfragen
Ich habe eine.app programmiert, die ein Shell-Skript ausführt. Da ich dort einige sudo Befehle habe, möchte ich gerne dass das Passwort vom Benutzer abgefragt wird.
Dabei ist es wichtig, dass das Passwort nicht in der Konsole oder sonstwo im Klartext erscheint.
Optimal wäre eine Abfrage wie man sie vom System kennt, wo der Benutzername schon ausgefüllt ist und nur das Admin Passwort verlangt wird. Wer kann mir weiterhelfen?
- 19.01.2011, 17:40 #2Schöner von Nordhausen
Themenstarter
- Registriert
- 10.2008
- Beiträge
- 324
- 19.01.2011, 20:12 #3
Was genau meinst du mit app? Und wie führst du das script aus? Erklär mal genauer was du machst?
- 19.01.2011, 23:18 #4Schöner von Nordhausen
Themenstarter
- Registriert
- 10.2008
- Beiträge
- 324
Ich habe einen Ordner namens Programm.app und dann die übliche Struktur erstellt. Ein Doppelklick startet /MacOS/Script, was ich mit chmod +x ausführbar gemacht habe. Ich weiss nicht genau wie ich das nennen soll.
- 19.01.2011, 23:40 #5
Äh das ist nicht dein ernst, oder? Ein Ordner namens Programm.app? Jedes Programm ist ein Ordner! Bist du sicher das du unbedingt selber programmieren willst? ... Was ich meinte ist, ist es in C, C++, Java, ... bzw. in welche Sprache programmierst du? Wie sieht der Code aus, wo das Script aufgerufen wird? Schau mal in die Apple Developer Dokus, dort wird sehr gut erklärt, wie man sowas lösst.
- 20.01.2011, 06:58 #6
Die wohl einfachste Weise ein Shellskript mit einem GUI-Dialog das Adminkennwort abfragen zu lassen ist die Einkapselung in ein AppleSkript.
Das bietet sich besonders bei nur einzelnen Befehlen oder sehr kurzen, simplen Skripten an. Im AppleSkript-Editor sieht das so aus:
Aufgemerkt: KEIN 'sudo' verwenden, diese Funktion übernimmt die entsprechende AppleSkript-Anweisung.Code:try do shell script " Shell-Befehle; ...; Shell-Befehle; " with administrator privileges end try
Doppelte Anführungszeichen und Backslashes innerhalb der Shellbefehle müssen jeweils durch einen vorangestellten Backslash maskiert werden, sonst werden sie von AppleSkript missverstanden. (Beachte die Gänsefüsschen, die den gesamten Skripttext kapseln.)
Ausgeführt wird das ganze mit der Shell /bin/sh im Posix-Modus, einige Bash-Features stehen also nicht zur Verfügung (also genau so wie ein normales Shellskript, das mit dem Shebang '#!/bin/sh' eingeleitet wird.)
Das Shellskript wird von root ausgeführt, Arbeitsverzeichnis ist /
Textausgaben des Skripts werden an AppleSkript zurückgegeben und können dort in eine Variable eingelesen werden falls gewünscht.
Ein reales Skript könnte also folgendermassen aussehen:
Eine ganz andere Methode wäre die Verwendung von /usr/libexec/authopen - aber das eignet sich nur zum Zugriff auf einzelne Dateien, um das in einem Skript sinnvoll verwenden zu können ist etwas weiterreichende Erfahrung nötig.Code:property ausgabetext : string try set ausgabetext to do shell script " echo Ein\\ doofer\\ Ordner: echo ls -1 \"/System/Library/User Template\" echo echo echo \"Noch einer:\" echo ls -1 \"/private/var/root\" " with administrator privileges display dialog "Ausgabe ist:" & return & return & ausgabetext buttons "OK" with title "Skriptausgabe" with icon note default button 1 giving up after 10 end tryGeändert von Rastafari (20.01.2011 um 07:09 Uhr)
- 20.01.2011, 08:58 #7
Jo, wenn sein Programm.app ein AppleScript ist
- 20.01.2011, 16:51 #8Schöner von Nordhausen
Themenstarter
- Registriert
- 10.2008
- Beiträge
- 324
Ich bin zwar kein Apple Developer, aber ich weiss schon was ich tue. Die Notation mag jetzt nicht perfekt sein, aber ich denke das sagt schon welche Sprache ich verwenden werde: "Ich habe eine.app programmiert, die ein Shell-Skript ausführt."
Vielen Dank das ist genau das was ich gesucht habe. Ich hatte bei meinen Versuchen immer sudo verwendet und dadurch hat diese Methode nicht funktioniert.
Zum Test habe ich mit osacscript -e '' ein shellscript, in einem applescript, in einem shellscript ausgeführt und es hat soweit funktioniert.
Ich bin da etwas unerfahren, kann ich irgendwo definieren, dass mein Script ein AS ist? Mit dem Befehl osascript im shellscript will OS X Rosetta installieren.
Code:<?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>CFBundleExecutable</key> <string>script</string> <key>CFBundleInfoDictionaryVersion</key> <string>6.0</string> <key>CFBundlePackageType</key> <string>APPL</string> <key>CFBundleSignature</key> <string>????</string> <key>CFBundleVersion</key> <string>1.0</string> <key>LSUIElement</key> <string>1</string> </dict> </plist>
- 20.01.2011, 17:17 #9
- 20.01.2011, 19:28 #10Schöner von Nordhausen
Themenstarter
- Registriert
- 10.2008
- Beiträge
- 324


Zitieren

Wenn du nicht weiter erklären willst, dann eben nicht ... viel spaß weiterhin
