Package: python-paramiko
Version: 1.7.4-0.1
Severity: normal

First of all, thanks for paramiko, to both you and the upstream.

def execCmdSSH(self, command):
        stdin, stdout, stderr = self.__conn.exec_command(command)
        log.msg(stdout.read())

This is my example code, where I just pass in a command to exec_command() and 
read out the output to my logger, log.


     |  exec_command(self, command)
     |      Execute a command on the server.  If the server allows it, the 
channel
     |      will then be directly connected to the stdin, stdout, and stderr of
     |      the command being executed.
     |
     |      When the command finishes executing, the channel will be closed and
     |      can't be reused.  You must open a new channel if you wish to execute
     |      another command.
     |
     |      @param command: a shell command to execute.
     |      @type command: str
     |
     |      @raise SSHException: if the request was rejected or the channel was
     |          closed


As far as I understood it, it just is giving me the descriptors.

So I just went ahead and did a full read().

read() says:

read(...)
    read([size]) -> read at most size bytes, returned as a string.

    If the size argument is negative or omitted, read until EOF is reached.
    Notice that when in non-blocking mode, less data than what was requested
    may be returned, even if no size parameter was given.

As it says, keep reading until EOF.

In my case, in the above example, it reads and then gets a 'None'.
My logger, log, only accepts strings. So it fails when it receives a 'None'.

Am I doing something wrong here in the way I'm reading the output from 
exec_command() ??

r...@champaran:~/devel/lunadm  (master)$ ./lunadm show -t 10.72.201.72
Hostname: 10.72.201.72
Username [rrs]: root
Password for r...@10.72.201.72:
        /vol/vol1/lnx-ibm-sanboot      5g (5368709120)    (r/w, online, mapped)
Traceback (most recent call last):
  File "./lunadm", line 16, in <module>
    main()
  File "/home/rrs/devel/lunadm/lunadm_core.py", line 474, in main
    log.msg(connection.execCmd("lun " + cmd) )
  File "/home/rrs/devel/lunadm/lunadm_core.py", line 137, in msg
    sys.stdout.write(msg)
TypeError: argument 1 must be string or read-only character buffer, not None


Is this 'None' intentional ?
How do I read from the tuple that exec_command() gives ?


Regards,
Ritesh


-- System Information:
Debian Release: squeeze/sid
  APT prefers testing
  APT policy: (990, 'testing'), (500, 'unstable'), (101, 'experimental')
Architecture: i386 (i686)

Kernel: Linux 2.6.31-1-686 (SMP w/1 CPU core)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages python-paramiko depends on:
ii  python                     2.5.4-2       An interactive high-level object-o
ii  python-crypto              2.0.1+dfsg1-4 cryptographic algorithms and proto
ii  python-support             1.0.4         automated rebuilding support for P

python-paramiko recommends no packages.

python-paramiko suggests no packages.

-- no debconf information



-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to