Ho bisogno di eseguire questo comando linux da python e assegnare l'output a una variabile.Esecuzione di un comando linux da python
ps -ef | grep rtptransmit | grep -v grep
Ho provato a usare la libreria dei comandi python per farlo.
import commands
a = commands.getoutput('ps -ef | grep rtptransmit | grep -v grep')
Ma a ottiene la fine del cut off. L'output che ottengo è:
'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'
ma il risultato atteso è:
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
Qualcuno sa come fermare l'uscita di ottenere tagliato o qualcuno può suggerire un altro metodo?
-1 per l'uso inutile di 'grep' e' shell = True'. – lunaryorn
La 'shell' è necessaria se si desidera utilizzare pipe nel comando. Riguardo a 'grep', in realtà ho appena copiato e incollato il comando dalla domanda. Quel secondo 'grep' sospetto ci sia perché a volte il comando' grep' che eseguiamo sembra anche essere grep-ed e quindi deve essere rimosso. Questo in realtà può essere evitato usando 'grep [r] tptransmit' – fajran
So che' shell = True' è necessario per usare una pipe nel comando, e che il secondo 'grep' è quello di rimuovere il primo comando' grep' dal elenco dei processi filtrati. Ma entrambi, il tubo e 'grep' sono superflui in questo caso. – lunaryorn