linux, python,program screen

0

Witam
Krótki wstęp:
zainstalowany program:

  • screen
    Poleceniem w linuxie:
    screen -ls | grep packettransport -c #dostaje liczbę aktualnych screen

W pythonie chciałem zrobić program, który zwracał by liczbę aktualnych screenów, wykonując polecenie w bashu.

import subprocess

command = "screen -ls | grep packettransport -c"
returned_output = subprocess.check_output(command, shell=True)
print(returned_output.decode("utf-8"))

Czy mógłby mi ktoś wskazać błąd w powyższym kodzie:
Exception:

Traceback (most recent call last):
  File "test.py", line 16, in <module>
    returned_output = subprocess.check_output(command, shell=True)
  File "/usr/lib/python2.7/subprocess.py", line 574, in check_output
    raise CalledProcessError(retcode, cmd, output=output)
subprocess.CalledProcessError: Command 'screen -ls | grep packettransport -c' returned non-zero exit status 1

0

subprocess.CalledProcessError: Command 'screen -ls | grep packettransport -c' returned non-zero exit status 1

Kod pythona jest ok, ale z komendą jest problem. Spróbuj zamienić miejscami packettransport z -c.

0

wygląda na to że sobie nie radzi z tą komendą, po zmianie tak jak pisałeś:

Traceback (most recent call last):
  File "test.py", line 4, in <module>
    returned_output = subprocess.check_output(command, shell=True)
  File "/usr/lib/python3.5/subprocess.py", line 626, in check_output
    **kwargs).stdout
  File "/usr/lib/python3.5/subprocess.py", line 708, in run
    output=stdout, stderr=stderr)
subprocess.CalledProcessError: Command 'screen -ls | grep -c packettransport' returned non-zero exit status 1

2

Przechwytywanie.PNG

0

Gdybyś szukał gotowego multiplexera opakowanego w python to polecam: https://github.com/tmux-python/tmuxp

1 użytkowników online, w tym zalogowanych: 0, gości: 1