Informationen aus Config-Datei auslesen?

B

bschra

Mitglied
Thread Starter
Dabei seit
09.10.2014
Beiträge
29
Reaktionspunkte
0
Hallo,

ich bin Anfänger und arbeite mich gerade so ein wenig in die Materie Applescript ein.

Nun habe ich zwei kleine Scripts verfasst, die jedes Mal mein Benutzerpasswort benutzen, z.B.
Code:
[COLOR=#012FBE][FONT=Verdana][B]do shell script[/B][/FONT][/COLOR] [FONT=Verdana]"pmset displaysleep 1"[/FONT] [COLOR=#5730BE][FONT=Verdana]password[/FONT][/COLOR] [FONT=Verdana]"passwort" [B]with[/B][/FONT] [COLOR=#012FBE][FONT=Verdana]administrator privileges[/FONT][/COLOR]

Wie kann ich das Script stattdessen eine Config-Datei, in der das Passwort hinterlegt ist, auslesen lassen? Und wie müsste diese Config-Datei aufgebaut sein? Aktuell soll sie nur das Passwort an sich erhalten, allerdings würde ich in Zukunft gerne weitere Informationen in der Config-Datei hinterlegen, sodass ein gezieltes Auslesen möglich sein soll. Also ich meine, dass die Datei nicht nur mein PW im Klartext enthalten soll, sondern darin vielleicht auch noch andere Variablen stehen.

Danke & LG :)
 
Wenn ich es ohne großen Aufwand auch verschlüsselt speichern kann, wäre das natürlich auch super.

Nur zur Erklärung, hier geht es um ein privat genutztes Script bei mir zu Hause, also muss die Sicherheit nicht allzu hoch sein. Aber wenn es für mich als Noob machbar ist, würde ich es schon verschlüsseln.
 
Warum nutzt du dafür nicht sudo? In der /etc/sudoers kannst du festlegen, welche Programme auch ohne Passworteingabe ausgeführt werden dürfen. Da musst du nur noch sicherstellen, dass das Script nicht von anderen bearbeitet werden kann.
 
Das wusste ich nicht. Klingt nach einer guten Idee. Aber ich möchte halt in Zukunft auch weitere Informationen in diese Config-Datei einbauen. Daher ist es okay, dass das Passwort gespeichert wird (egal ob Klartext oder Hash, wobei verschlüsselt natürlich schon besser wäre).

In der Config sollen beispielsweise noch IP-Adressen verschiedener Geräte, die ich ansprechen möchte, abgespeichert werden. Das kommt alles später. Momentan müsste ich herausfinden, wie ich eben von einem Applcescript auf (diverse) Informationen einer anderen Datei zugreifen kann. Geht das?
 
Lass' Dir mit dem Passwort nichts einreden. Standardmäßig solltest Du auf Deinem Rechner FileVault aktivieren.
Damit ist das gesamte "Problem" schon eklatant reduziert.
Geschwindigkeitsverlust wirst Du Dank SSD nicht wahrnehmen und deshalb solltest Du die Verschlüsselung grundlegend einschalten.
Kostet auch nix ;-)

Jetzt können andere wieder argumentieren, dass andere Programme/Skripe die Dateien auslesen könnten.
Aber dagegen gibt es auch mehr Gegenargumente, als Panikmacherei.

Wenn Du Dein Skript fertiggestellt hast, dann kannst Du es beim Speichern/Exportieren mit der Option "Nur ausführbar" sichern.
Du selbst kannst es dann aber auch nicht mehr editieren und musst es Dir irgendwo als Dupikat ablegen.

Viele Grüße
 
Achso:

Was Du suchst ist eine Plist.
Mit AppleScript kannst Du via Sytem Events property list items leicht lesen und schreiben.

http://www.macosxautomation.com/applescript/features/propertylists.html

Das Passwort kannst Du auch manuell im Schlüsselbund hinterlegen und Dein Skipt als vertrauenswürdig hinzufügen.
Du musst mal schauen, wie Du mit AppleScript an keychain access kommst.
Aber vermutlich rentiert die Arbeit dafür nicht.

Viele Grüße
 
Danke für die Infos. So wirklich komme ich damit allerdings nicht klar. Wie muss denn die PLaylist in diesem Fall aussehen?

Passwort = pw
Server 1 = 192.168.178.44
Server 2 = 10.0.0.2.1
User 1 = Usereins
User 2 = Userz

Und wie lese ich dann im eigentlich Script nur ein, um welchen Server, User _oder_ PW es geht?
 
Das Passwort bekommt man so aus dem Schlüsselbund:

do shell script "security 2>&1 find-generic-password -gs Admin /Users/DeinName/Library/Keychains/AppleScript.keychain | grep password | sed 's/password: \"//;s/\"$//'"


Den Namen des Schlüsselbundes und des Schlüssels musst du natürlich anpassen. Den Schlüssel anzulegen sollte kein Problem sein. Das Passwort in einer eigenen Datei abzulegen halte ich für nicht sehr sinnvoll. Wenn das Programm als "nur ausführbar" gespeichert wird, dann ist das Passwort übrigens immer noch im Klartext gespeichert.
 
Ich habe das glaube ich falsch erklärt... Was ich eigentlich vorhabe, ist, eine Datei zu erstellen, in der ich verschiedene Informationen aufliste. Beispielsweise die IPs einiger Server, verschiedene Benutzernamen und zugehörige Passwörter. Das kann eine Textdatei sein, oder aber auch plist oder sonst etwas, je nach dem, was am Besten funktionieren würde.

Innerhalb eines Applescripts wird dann z.B. eine IP oder eine Passwort abgefragt. Und statt dann _im_ Applescript direkt IP, PW usw. einzugeben, möchte ich sagen "wenn das Applescript nach Username X fragt, nimm Wert $username aus 'config-Datei'.", "wenn Script nach Server Y fragt, nimmt Wert $IP aus 'config-Datei'.", etc.

So könnte ich Angaben für diverse Applescripts auf einmal editieren. Mit dem Schlüsselbund arbeite ich nicht.
 
Siehe unten…

- kopieren
- TextEdit öffnen
- einsetzen
- speichern mit der Endung "plist"

Einlesen dann eben wie hier beschrieben:
http://www.macosxautomation.com/applescript/features/propertylists.html

Passwort mußt Du nicht in der Datei sichern. Ansonsten ist das der korrekte Weg…

Viele Grüße

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">
	<array>
		<dict>
			<key>username</key>
			<string>user1</string>
			<key>password</key>
			<string>pw1</string>
			<key>server</key>
			<string>192.168.0.1</string>
		</dict>
		<dict>
			<key>username</key>
			<string>user2</string>
			<key>password</key>
			<string>pw2</string>
			<key>server</key>
			<string>192.168.0.2</string>
		</dict>
		<dict>
			<key>username</key>
			<string>user3</string>
			<key>password</key>
			<string>pw3</string>
			<key>server</key>
			<string>192.168.0.3</string>
		</dict>
	</array>
</plist>
 
Vielen Dank!

Ich habe die plist nun entsprechend angepasst... Das Auslesen findet dann wie statt? Nehmen wir an, ich möchte in einem AppleScript schreiben
User Eins heißt $user1, sein Passwort lautet $pw1 und er loggt sich ein auf $Server?
do shell script "pmset displaysleep 15" password "$pw1" with administrator privileges ?

Momentan schreibt das AppleScript zwar in die plist, soll sie ja aber eigentlich ausschließlich auslesen.
 
Zurück
Oben Unten