Pexpect and a Linux Terminal

asgarde at msn.com asgarde at msn.com
Wed Dec 26 09:54:10 EST 2007


On 25 déc, 15:49, prika... at gmail.com wrote:
> On Dec 25, 8:42 am, "asga... at msn.com" <asga... at msn.com> wrote:
>
>
>
> > On 25 déc, 10:14, "asga... at msn.com" <asga... at msn.com> wrote:
>
> > > On 25 déc, 09:41, "asga... at msn.com" <asga... at msn.com> wrote:
>
> > > > Yes it's work ! :-D
>
> > > > I use  prompt = '.*#' to detect the prompt expect. Thank you for you'r
> > > > help !
>
> > > > Vive Python et TK :-D
>
> > > I have another probleme, not directly from Pexpect() function. There
> > > is my code :
>
> > > from Tkinter import *
> > > from sys import *
> > > import tkMessageBox
> > > from tkColorChooser import askcolor
> > > from tkFileDialog   import askopenfilename
> > > import tkFileDialog as Selector
> > > from os.path import exists, join
> > > from os import pathsep
> > > import pexpect
> > > import os, sys
> > > def test():
> > >  cmd1="su -"
> > >  pwd="mypass"
> > >  prompt ='.*#'
> > >  iso=Selector.askopenfilename(initialdir="/home/user",filetypes =
> > > [("iso", "*.iso")])
> > >  lbl2=Label(fen1)
> > >  cmd2="mount -o loop "+iso+" /mnt/disk"
> > >  child = pexpect.spawn(cmd1)
> > >  child.expect('Mot de passe :')
> > >  child.sendline(pwd)
> > >  child.expect(prompt)
> > >  child.send(cmd2)
> > >  lbl2.configure(text=cmd2)
> > >  lbl2.pack()
> > > fen1=Tk()
> > > entr1=Entry(fen1)
> > > lbl1=Label(fen1)
> > > entr1.pack()
> > > lbl1.pack()
> > > bou1= Button(fen1,text='Parcourir',command=test)
> > > bou1.pack()
> > > fen1.mainloop()
>
> > > All that's ok when if cmd2 command like : mkdir /root/toto but when i
> > > want to replace it for : mount loop -o /home/user/myiso.iso /mnt/disk
> > > nothing happened :-( I tryed the command during many times and i don't
> > > know why it doesn't work :s
>
> > > if you can help me another time i will be apprecied :-P
>
> > > Thank you :)
>
> > When want to test the mkdir command, it work but ONLY if my TTY as
> > root is closed, very weired no ?
> > the mount command still not work :s
> > >  child = pexpect.spawn(cmd1)
> > >  child.expect('Mot de passe :')
> > >  child.sendline(pwd)
> > >  child.expect(prompt)
> > >  child.send(cmd2)
>
> Try sendline(cmd2). Most cases you may never need to use send() with
> pexpect.
> Since you used send here, the command is not yet entered to the shell;
> it's as though you typed the command and forgot to press enter.
>
> Again try adding a wait using child.expect(prompt). This will ensure
> 'cmd2' completed and then you may want to clean up using a call to
> child.close()
>
> If things still don't work, try some simple commands like you are
> doing with mkdir. Of course you want to first ensure you can manually
> do all the steps that you are trying to automate with pexpect.
>
> Karthik

Thank you for your help ! it work very fine !

Have a nice day



More information about the Python-list mailing list