On Wed, Sep 12, 2012 at 11:06 PM, Mike S <mikeofm...@gmail.com> wrote:
> try: > ret = subprocess.call("smbclient //reportingmachine/Dashboard/; put > %s\" -U Username%Password" % (fileName), shell=True) > if ret < 0: > print >>sys.stderr, "Child was terminated by signal", -ret > else: > os.unlink(path+fileName) > except OSError, e: > print >>sys.stderr, "Execution failed:", e I don't see a need to run this through the shell. I'd just use a list of arguments. Do you only want to delete the file if smbclient is killed by a signal? What if it fails for some other reason with a return code of 1? In the example below I assume the file is removed only if the put command succeeds. >From what I gather using "man smbclient", the basic template here is the following: smbclient servicename password -U username -c "put filename" The code below uses subprocess.check_call, which raises a CalledProcessError if the return code is non-zero. The variables username, password, filename, and path are strings. import sys import os from subprocess import check_call, CalledProcessError servicename = "//reportingmachine/Dashboard/" try: check_call(["smbclient", servicename, password, "-U", username, "-c", "put %s" % filename]) os.unlink(os.path.join(path, filename)) except CalledProcessError as e: print >>sys.stderr, "call failed:", e except OSError as e: print >>sys.stderr, "unlink failed:", e _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor