Tôi cần chạy lệnh linux này từ python và gán đầu ra cho biến.Chạy lệnh linux từ python
ps -ef | grep rtptransmit | grep -v grep
Tôi đã thử sử dụng thư viện lệnh pythons để thực hiện việc này.
import commands
a = commands.getoutput('ps -ef | grep rtptransmit | grep -v grep')
Nhưng sẽ bị cắt. Kết quả tôi nhận được là:
'nvr 20714 20711 0 10:39 ? 00:00:00 /opt/americandynamics/venvr/bin/rtptransmit setup_req db=media camera=6 stream=video substream=1 client_a'
nhưng sản lượng dự kiến là:
nvr 20714 20711 0 10:39 ? 00:00:00 /opt/americandynamics/venvr/bin/rtptransmit setup_req db=media camera=6 stream=video substream=1 client_address=192.168.200.179 client_rtp_port=6970 override_lockout=1 clienttype=1
Có ai biết làm thế nào để ngăn chặn đầu ra từ việc cắt đứt hoặc bất cứ ai có thể đề nghị phương pháp khác?
-1 cho việc sử dụng vô dụng 'grep' và' shell = True'. – lunaryorn
'Trình bao' là cần thiết nếu bạn muốn sử dụng đường ống trong lệnh. Về 'grep', tôi thực sự chỉ sao chép và dán lệnh từ câu hỏi. Điều đó 'grep' tôi nghi ngờ thứ hai là có bởi vì đôi khi lệnh' grep' mà chúng ta thực thi cũng có vẻ là grep-ed và do đó cần phải được loại bỏ. Điều này thực sự có thể tránh được bằng cách sử dụng 'grep [r] tptransmit' – fajran
Tôi biết rằng' shell = True' là cần thiết để sử dụng một đường ống trong lệnh, và rằng 'grep' thứ hai là để loại bỏ lệnh' grep' đầu tiên khỏi danh sách quá trình lọc. Nhưng cả hai, các đường ống và 'grep' là thừa trong trường hợp này. – lunaryorn