Wie führe ich einen Plist-Daemon unter MAC OS 10.8.5 mit den richtigen Dateiberechtigungen aus?

449
user2152277

Ich habe eine Plist-Datei gespeichert

/Library/LaunchDaemons/local.WiFiDaemon.plist  <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Disabled</key> <false/> <key>GroupName</key> <string>staff</string> <key>InitGroups</key> <true/> <key>Label</key> <string>local.job</string> <key>ProgramArguments</key> <array> <string>python</string> <string>/Library/Application Support/PythonDaemons/PythonTest.py</string> </array> <key>RunAtLoad</key> <true/> <key>StandardErrorPath</key> <string>/tmp/local.job.err</string> <key>StandardOutPath</key> <string>/tmp/local.job.out</string> <key>UserName</key> <string>myuser</string> </dict> </plist> 

Die Datei soll ein Python-Skript ausführen, das nur Google pingt und die Ergebnisse in einer Textdatei speichert:

/Library/Application Support/PythonDaemons/Ping_log.txt 

Das Problem ist, dass das Python-Skript einen Fehler ausgibt, der besagt, dass es nicht über die Berechtigungen für die Datei verfügt. Wenn ich das Skript von der Befehlszeile aus ausführe, funktioniert alles ohne spezielle Berechtigungen. Was habe ich hier vermisst?

Hier ist das Python-Skript:

import subprocess, datetime, time  host = "www.google.com" ping = subprocess.Popen( ["ping", "-c", "4", host], stdout = subprocess.PIPE, stderr = subprocess.PIPE) out, error = ping.communicate() with open('PingOut.txt', 'w') as outFile: outFile.write(out) temp = out.split('\n') parsed = temp[len(temp)-2].split('/') min = parsed[len(parsed)-4].split(' ')[2] avg = parsed[len(parsed)-3] max = parsed[len(parsed)-2]  print "min: " + str(min) + "avg: " + str(avg) + "max: " + str(max)  with open('Ping_log.txt', 'a') as f: f.write(str(datetime.datetime.now()) + ',' + str(min) + ',' + str(avg) + ',' + str(max)) 
0
Was sind die Zugriffsrechte auf `` `/ Library / Application Support / PythonDaemons /` ``? heiglandreas vor 9 Jahren 0
Ich habe gerade die Berechtigungen für dwr-wr-wr- geändert und gebe immer noch den Fehler: `traceback (letzter Aufruf zuletzt): Datei" / Library / Application Support / PythonDaemons / PythonTest.py ", Zeile 15, in mit open ('PingOut.txt', 'w') als outFile: IOError: [Errno 13] Berechtigung abgelehnt: 'PingOut.txt' ' user2152277 vor 9 Jahren 0
Da es sich um einen Ordner handelt, ist drwxrwxrwx erforderlich. Andernfalls darf sich niemand in den Ordner bewegen und kann daher keine Datei erstellen. heiglandreas vor 9 Jahren 0

1 Antwort auf die Frage

0
user2152277

Ich habe die Antwort über stackoverflow erhalten, anscheinend ohne den Pfad in der Python-Datei zu definieren und nur die Dateinamen anzugeben, die standardmäßig zum Erstellen der Dateien in einem Systemverzeichnis verwendet werden, auf das ich keinen Zugriff habe. Die Lösungen sind: Legen Sie den Arbeitspfad in Python fest

with open('/Library/Application Support/PythonDaemons/Ping_log.txt', 'a') as f: 

oder legen Sie das Verzeichnis in der Liste fest

<key>WorkingDirectory</key> <string>/Library/Application Support/PythonDaemons</string> 

Dies wurde vom Benutzer Barmar von StackOverflow bereitgestellt