Flucht

2016-10-25 15 views
1

ich einen Stoff Aufgabe haben, wie folgt:Flucht

@task 
def getCrons(): 
    timeStampNowServer = sudo("date +%s%3N", pty=False) 
    cronLogFiles = sudo(
     "find /home/logs/cron/ -maxdepth 2 -type f -mtime -1 -name '*.log'", pty=False) 
    cronLogFiles = cronLogFiles.splitlines(True) 
    for cronLog in cronLogFiles: 
     info = sudo(
      "awk '/END$/ {prev=$0; next}; /^#RETURN/ && $2>0 {cur=$0; pr=1; next}; pr {printf \" % s\n % s\n % s\n\", prev, cur, $0; pr=0}'{0}".format(cronLog), pty=False) 
     print(info) 

ich folgende Zurückverfolgungs habe:

Traceback (most recent call last): 
    File "/usr/lib/python2.7/site-packages/fabric/main.py", line 743, in main 
    *args, **kwargs 
    File "/usr/lib/python2.7/site-packages/fabric/tasks.py", line 379, in execute 
    multiprocessing 
    File "/usr/lib/python2.7/site-packages/fabric/tasks.py", line 274, in _execute 
    return task.run(*args, **kwargs) 
    File "/usr/lib/python2.7/site-packages/fabric/tasks.py", line 174, in run 
    return self.wrapped(*args, **kwargs) 
    File "/home/lbn/k.sewnundun/fabfile/kse/test.py", line 18, in getCrons 
    "awk '/END$/ {prev=$0; next}; /^#RETURN/ && $2>0 {cur=$0; pr=1; next}; pr {printf \"%s\n%s\n%s\n\", prev, cur, $0; pr=0}'{0}".format(cronLog), pty=False) 
KeyError: 'prev=$0; next' 

Der Befehl, den ich auf dem Server ausgeführt werden soll ist:

awk '/END$/ {prev=$0; next}; /^#RETURN/ && $2>0 {cur=$0; pr=1; next}; pr {printf "%s\n%s\n%s\n", prev, cur, $0; pr=0}' mylog.LOG 

Allerdings bin ich nicht in der Lage, die Zeichen in der Zeile zu entkommen:

info = sudo(
      "awk '/END$/ {prev=$0; next}; /^#RETURN/ && $2>0 {cur=$0; pr=1; next}; pr {printf \" % s\n % s\n % s\n\", prev, cur, $0; pr=0}'{0}".format(cronLog), pty=False) 

Wie mache ich es richtig laufen?

Antwort

2

Das Problem wurde die { durch die Flucht gelöst und die awk neue Linien:

info = sudo("awk '/END$/ {{prev=$0; next}}; /^#RETURN/ && $2>0 {{cur=$0; pr=1; next}}; pr {{printf \"%s\\n%s\\n%s\\n\", prev, cur, $0; pr=0}}' {0}".format(cronLog), pty=False) 

https://docs.python.org/2/library/string.html#format-string-syntax

Format Strings {} durch geschweifte Klammern „Ersatzfelder“ umgeben enthalten. Alles, was nicht in geschweiften Klammern enthalten ist, wird als literaler Text betrachtet, der unverändert in die Ausgabe kopiert wird. Wenn Sie ein geschweiftes Zeichen in den Literaltext einfügen müssen, kann es durch Verdoppelung mit dem folgenden Code versehen werden: {{ und }}.