Hi Jon, Thanks for the reply. So there are no errors. Essentially everything runs as planned. Sorry for being ignorant, but I am not sure if there is another way for providing trace data. I will look into what other debugging I can provide.
Essentially what happens is that only the second command gets processed and the first is ignored. As far as the global variables are concerned, I am not too sure what the best way is to allow my variables to be seen by another sub. In the script I am using optparse, however in order for the variables to make any sense to my storagessh sub, I have to declare them as global, since all the variables within my options sub have a local scope. I am not too sure of a better way to do this. I don't like it much either. Hopefully you can help me shed some light on this in terms of best practice. Normally I declare variable scope outside of my subroutines where required. However since variable scope is local within a subroutine, seems like I have to declare them global in order for the other subs to see it. Anyhow.. your feedback has been much appreciated.. The script is still a work in progress, so I plan to do so more cosmetic enhancements once I review it a few more times. Thanks! On Wed, Jun 24, 2009 at 4:34 PM, Jon Clements<jon...@googlemail.com> wrote: > On Jun 24, 11:22 pm, Frank Ruiz <frank.r...@gmail.com> wrote: >> Greetings, >> >> I am trying to process multiple commands using paramiko. I have >> searched other threads, and I think my use case is a little different. >> I am trying to login to a storage node that has a special shell, and >> as such I cant execute a script on the storage node side. >> >> I am also trying to avoid using pexpect because I hate making system >> calls.. hence my leaning towards paramiko. >> >> Was hoping someone could help me identify a way to process multiple >> commands using paramiko. >> >> I have two commands listed below, however only one is getting processed. >> >> Any help is much appreciated. >> >> Thanks! >> >> Here is my script: >> >> #!/usr/bin/env python >> >> #-Modules--------------------------------------------------------------------- >> import optparse >> import sys >> import paramiko >> >> #-Variables------------------------------------------------------------------- >> plog = 'storagessh.log' >> suser = 'root' >> >> #-Config---------------------------------------------------------------------- >> >> #-Subs-Defined---------------------------------------------------------------- >> def options(): >> global hostname >> global goldenimage >> global lunclone >> global sshport >> >> usage = "usage: %prog [options] -n <nodename> -g <goldenimage> -l <lun>" >> >> parser = optparse.OptionParser(usage) >> >> parser.add_option("-n", "--node", >> dest="hostname", >> help="Name of storage node you are connecting to.") >> parser.add_option("-g", "--gold", >> dest="goldenimage", >> help="Name of goldenimage to clone.") >> parser.add_option("-l", "--lun", >> dest="lunclone", >> help="Name of lun to create.") >> parser.add_option("-p", "--port", >> dest="sshport", >> default=22, >> help="SSH port number.") >> options, args = parser.parse_args() >> >> if not options.hostname: >> parser.error("Missing hostname argument.") >> exit >> elif not options.goldenimage: >> parser.error("Missing goldenimage argument.") >> exit >> elif not options.lunclone: >> parser.error("Missing lun argument.") >> exit >> >> hostname = options.hostname >> goldenimage = options.goldenimage >> lunclone = options.lunclone >> sshport = options.sshport >> >> def storagessh(): >> paramiko.util.log_to_file(plog) >> client = paramiko.SSHClient() >> client.load_system_host_keys() >> client.connect(hostname, sshport, suser) >> stdin, stdout, stderr = client.exec_command('show') >> stdin, stdout, stderr = client.exec_command('help') >> print stdout.read() >> client.close() >> >> #--Initialization------------------------------------------------------------- >> if __name__ == "__main__": >> options() >> storagessh() > > Again, as you were asked on the original post -- full tracebacks and > explain "what is not working". > > The use of global variables scares me -- why are those needed? > -- > http://mail.python.org/mailman/listinfo/python-list > -- http://mail.python.org/mailman/listinfo/python-list