фабрика "бежит", не возвращая никакого результата с соответствием образца awk - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть требование, при котором я должен собирать статистику перезагрузки для нескольких машин в моей среде.Я использую fabric для множества других задач, и поэтому я хотел сделать это также с fabric.Ниже приведен мой код.

from fabric.api import *

env.hosts = ['testbox']

@task
@parallel
def runner():
    run("last -xF|awk '{print $6$8}'|head -10")

execute(runner)

Вывод

[testbox] Executing task 'runner'
[testbox] run: last -xF|awk '{print $6$8}'|head -10
[testbox] out: 32018
[testbox] out: 32018
[testbox] out: 32018
[testbox] out: 32018
[testbox] out: 32018
[testbox] out: 32018
[testbox] out: 32018
[testbox] out: 32018
[testbox] out: 32018
[testbox] out: 32018

Однако, если я изменю свой код на приведенный ниже, он больше не будет работать

from fabric.api import *

env.hosts = ['testbox']

@task
@parallel
def runner():
    run("last -xF|awk '/boot/{print $6$8}'|head -10")

execute(runner)

Вывод

[testbox] Executing task 'runner'
[testbox] run: last -xF|awk '/boot/{print $6$8}'|head -10

Я не уверен, почему это происходит, я тоже пытался избежать \, но даже это не сработало.Как примечание, приведенная выше команда прекрасно работает в bash.

То же самое происходит и с grep.

from fabric.api import *

env.hosts = ['testbox']

@task
@parallel
def runner():
    run("last -xF|grep boot")

execute(runner)

Вывод

Fatal error: run() received nonzero return code 1 while executing!

Requested: last -xF|grep boot
Executed: /bin/bash -l -c "last -xF|grep boot"

Aborting.

Edit 1

Я отлаживал больше в нем и обнаружил, что проблема не в fabric, а в ssh самом соединении.Поэтому я больше изучаю его и обновлю, как только он будет готов.

...