Paramiko help - processing multiple commands
Jon Clements
joncle at googlemail.com
Wed Jun 24 19:34:41 EDT 2009
On Jun 24, 11:22 pm, Frank Ruiz <frank.r... at 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?
More information about the Python-list
mailing list