I have a python function that calls a subprocess call in a shell script that outputs "true" or "false". I save the output from subprocess.communicate() and try to do return output == 'true' , but it returns False every time. I'm not too familiar with python, but reading about string comparisons says that you can compare strings with ==,! = Etc.
Here is the code:
def verifydeployment(application): from subprocess import Popen, PIPE import socket, time # Loop until jboss is up. After 90 seconds the script stops looping; this # causes twiddle to be unsuccessful and deployment is considered 'failed'. begin = time.time() while True: try: socket.create_connection(('localhost', 8080)) break except socket.error, msg: if (time.time() - begin) > 90: break else: continue time.sleep(15) # sleep for 15 seconds to allow JMX to initialize twiddle = os.path.join(JBOSS_DIR, 'bin', 'twiddle.sh') url = 'file:' + os.path.join(JBOSS_DIR, 'server', 'default', 'deploy', os.path.basename(application)) p = Popen([twiddle, 'invoke', 'jboss.system:service=MainDeployer', 'isDeployed', url], stdout=PIPE) isdeployed = p.communicate()[0] print type(isdeployed) print type('true') print isdeployed return isdeployed == 'true'
Conclusion:
<type 'str'>
but False always returns. I also tried return str(isdeployed) == 'true' .
ravun source share