In article <[EMAIL PROTECTED]>,
crybaby  <[EMAIL PROTECTED]> wrote:
>I need to ssh into a remote machine and check if mytest.log file is
>there.  I have setup ssh keys to handle login authentications.
>
>How do I determine if mytest.log is there by using Pexpect. What I
>have done so far is spawned a child for ssh.
>
>1) Now what do I do to execute shell_cmd(ls and grep), spawn another
>child?
>
>2) Can I use the same child that was spawned for ssh, if so how?
>
>3) After executing the ls -l|grep mystest.log, how do I get the value
>from pexpect?
>
>shell_cmd = 'ls -l | grep mytest.log'
>child = pexpect.spawn ('ssh [EMAIL PROTECTED]')
>#child.sendline(shell_cmd)
>
>>>> child.sendline("ls")
>3
>>>> print child.before
>:~[
>>>> child.after
>'[EMAIL PROTECTED] '
>
>>>> child.sendline('/bin/bash', ['-c',shell_cmd])
>Traceback (most recent call last):
>  File "<stdin>", line 1, in ?
>TypeError: sendline() takes at most 2 arguments (3 given)
                        .
                        .
                        .
You might like to experiment with this:

    import pexpect

    prompt = '\$ '
    filename = "mytest.log"
    password = "xxxxxx"

    child = pexpect.spawn('ssh -l %s %s ' (user, host))
    child.expect([pexpect.TIMEOUT, '[Pp]assword: '])
    child.sendline(password)
    child.expect([pexpect.TIMEOUT, prompt])
    child.sendline("ls %s > /dev/null 2>&1; echo $?" % filename)
    child.expect([pexpect.TIMEOUT, prompt])
    result = child.before
        # You'll typically see "0" or "2" here, depending on 
        # whether filename exists or not.
    print result.split('\r\n')[1]

Does this leave any questions?
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to