Jak uzyskać program, aby wypisał polecenie do wiersza poleceń ubuntu tak, jakbym go wpisał

0

Mam program dbot, który działa w wierszu komend Ubuntu. Jeśli z katalogu o nazwie dbot wpisuję w linii poleceń z klawiatury „./dbot.sh dowolne polecenie”, działa i robi to, co chcę.

To działa ~ / dbot $ ./dbot.sh anycommand

Jestem początkującym i napisałem program tragic.py w języku Python 3, który znajduje się w tym samym katalogu o nazwie dbot.

Jeśli z wiersza poleceń ubuntu uruchomię w tle plik tragic.py przez ~ / dbot $ python3 tragic.py, a następnie skopiuję i wkleję dowolną komendę ./dbot.sh, to działa i dbot robi to, co chcę. Musi być w tle, inaczej polecenie nie będzie działać po wklejeniu, więc używam &.

Jednak chcę, aby mój program tragic.py w Pythonie wypisał komendę ./dbot.sh dowolną komendą, aby polecenie zostało wydane dbotowi tak, jakbym go wpisał lub wkleił. Jednak nie działa ani w tle, ani na pierwszym planie.

Próbowałem użyć normalnej instrukcji print i sys.stdout.write () zarówno z jak i bez sys.stdout.flush (), ale bez powodzenia

Jak sprawić, aby dbot odpowiedział na polecenie wydrukowane przez tragic.py w wierszu poleceń ubuntu. Nie rozumiem, dlaczego po wpisaniu lub wklejeniu działa, ale nie działa, gdy tragic.py drukuje go lub wysyła za pomocą sys.stdout.write

ethertec
źródło
Omówiono tutaj niektóre opcje osiągnięcia tego celu za pomocą różnych narzędzi .
John1024,
Czy mówisz o zastępowaniu poleceń ? Jak w ./dbot.sh $(python3 tragic.py)?
PerlDuck,

Odpowiedzi:

0

Zawsze możesz użyć xargs, tj.

echo '-l' | xargs ls

skutecznie wykona ls -l. Więc w twoim przypadku powinno to być coś takiego ./tragic.py | xargs ./dbot.sh, tzn. Wynik ./tragic.pypolecenia będzie użyty jako argument./dbot.sh

Jacek Herbrych
źródło
Dziękuję za pomoc Jacek Herbrych - tego właśnie szukam. Spróbuję! a także dzięki John1024 i PerlDuck.
ethertec