Skip to main content
added 658 characters in body
Source Link
Godhaze
  • 155
  • 3
  • 17

I'm having a problem with my subprocess command, I like to grep out the lines that match with "Online" line.

def run_command(command): p = subprocess.Popen(command,shell=False, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) return iter(p.stdout.readline, b'') command = 'mosquitto_sub -u example -P example -t ITT/# -v | grep "Online" '.split() for line in run_command(command): print(line) 

But I will get an error

Error: Unknown option '|'. Use 'mosquitto_sub --help' to see usage. 

But when running with linux shell

user@server64:~/Pythoniscriptid$ mosquitto_sub -u example -P example -t ITT/# -v | grep "Online" ITT/C5/link Online ITT/IoT/tester55/link Online ITT/ESP32/TEST/link Online 

I also tried shell = True, but with no success, because I will get another error, that dosen't recognize the topic ITT/#

Error: You must specify a topic to subscribe to. Use 'mosquitto_sub --help' to see usage. 

The "possible dublicate" didn't help me at all, So I think I'm having a different problem. I tried to change code to this, put in not getting any return

def run_command(command,command2): p1 = subprocess.Popen(command,stdout=subprocess.PIPE,stderr=subprocess.STDOUT) p2 = subprocess.Popen(command2,stdin=p1.stdout,stdout=subprocess.PIPE) return iter(p2.stdout.readline,'') command = 'mosquitto_sub -u example -P example -t ITT/# -v'.split() command2 = 'grep Online'.split() #subprocess.getoutput(command) for line in run_command(command,command2): print(line) 

I'm having a problem with my subprocess command, I like to grep out the lines that match with "Online" line.

def run_command(command): p = subprocess.Popen(command,shell=False, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) return iter(p.stdout.readline, b'') command = 'mosquitto_sub -u example -P example -t ITT/# -v | grep "Online" '.split() for line in run_command(command): print(line) 

But I will get an error

Error: Unknown option '|'. Use 'mosquitto_sub --help' to see usage. 

But when running with linux shell

user@server64:~/Pythoniscriptid$ mosquitto_sub -u example -P example -t ITT/# -v | grep "Online" ITT/C5/link Online ITT/IoT/tester55/link Online ITT/ESP32/TEST/link Online 

I also tried shell = True, but with no success, because I will get another error, that dosen't recognize the topic ITT/#

Error: You must specify a topic to subscribe to. Use 'mosquitto_sub --help' to see usage. 

I'm having a problem with my subprocess command, I like to grep out the lines that match with "Online" line.

def run_command(command): p = subprocess.Popen(command,shell=False, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) return iter(p.stdout.readline, b'') command = 'mosquitto_sub -u example -P example -t ITT/# -v | grep "Online" '.split() for line in run_command(command): print(line) 

But I will get an error

Error: Unknown option '|'. Use 'mosquitto_sub --help' to see usage. 

But when running with linux shell

user@server64:~/Pythoniscriptid$ mosquitto_sub -u example -P example -t ITT/# -v | grep "Online" ITT/C5/link Online ITT/IoT/tester55/link Online ITT/ESP32/TEST/link Online 

I also tried shell = True, but with no success, because I will get another error, that dosen't recognize the topic ITT/#

Error: You must specify a topic to subscribe to. Use 'mosquitto_sub --help' to see usage. 

The "possible dublicate" didn't help me at all, So I think I'm having a different problem. I tried to change code to this, put in not getting any return

def run_command(command,command2): p1 = subprocess.Popen(command,stdout=subprocess.PIPE,stderr=subprocess.STDOUT) p2 = subprocess.Popen(command2,stdin=p1.stdout,stdout=subprocess.PIPE) return iter(p2.stdout.readline,'') command = 'mosquitto_sub -u example -P example -t ITT/# -v'.split() command2 = 'grep Online'.split() #subprocess.getoutput(command) for line in run_command(command,command2): print(line) 
Source Link
Godhaze
  • 155
  • 3
  • 17

Cant use grep in subprocess command

I'm having a problem with my subprocess command, I like to grep out the lines that match with "Online" line.

def run_command(command): p = subprocess.Popen(command,shell=False, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) return iter(p.stdout.readline, b'') command = 'mosquitto_sub -u example -P example -t ITT/# -v | grep "Online" '.split() for line in run_command(command): print(line) 

But I will get an error

Error: Unknown option '|'. Use 'mosquitto_sub --help' to see usage. 

But when running with linux shell

user@server64:~/Pythoniscriptid$ mosquitto_sub -u example -P example -t ITT/# -v | grep "Online" ITT/C5/link Online ITT/IoT/tester55/link Online ITT/ESP32/TEST/link Online 

I also tried shell = True, but with no success, because I will get another error, that dosen't recognize the topic ITT/#

Error: You must specify a topic to subscribe to. Use 'mosquitto_sub --help' to see usage.