[HELP!] a doubt about entering password in python

Discussion in 'Python' started by douxin, Jan 18, 2013.

  1. douxin

    douxin Guest

    Hi all:

    i have some doubts in doing python programming

    i wanted to execute a command "su -c 'fdisk -l'",and it needed a
    password
    so i wanted to write a python script to get this done.

    i knew 'pexpect' would work fine,but i had to set a certain timeout
    to take care of the real delay time which i probably didn't know

    i tried to use 'subprocess' to do this,however,it did not work
    well,and came the problem

    i use Popen to execute "su -c 'fdisk -l'" in sub process,and
    assigned subprocess.PIPE to stdin,stdout
    i tried to enter password by doing "stdin.write("password"+"\n")"
    and i expected i could get the output of "fdisk -l" by doing
    "stdout.read()"
    it didn't work.

    will somebody tell me what is going on with that?
    i'll appreciate i can learn from you

    Dou
    douxin, Jan 18, 2013
    #1
    1. Advertising

  2. On Fri, 18 Jan 2013 10:49:30 +0800, douxin wrote:

    > i use Popen to execute "su -c 'fdisk -l'" in sub process,and
    > assigned subprocess.PIPE to stdin,stdout i tried to enter password
    > by doing "stdin.write("password"+"\n")" and i expected i could get
    > the output of "fdisk -l" by doing "stdout.read()"
    > it didn't work.
    >
    > will somebody tell me what is going on with that?


    Would you like us to guess what happened? I love guessing games!

    My guess is that it output "su: incorrect password", which means you have
    the wrong password. Is that it?

    If not, my guess is that it output "fdisk: command not found", in which
    case your system is broken and the fdisk binary is missing or not on the
    PATH. Am I close?

    Last guess: you got a Python traceback with an error:

    NameError: name 'subprocess' is not defined

    You need to import the subprocess first.


    If none of my guesses are correct, could we have some hints? Perhaps show
    us the actual code you are using, and the actual results, copied and
    pasted exactly.

    Thank you.


    --
    Steven
    Steven D'Aprano, Jan 18, 2013
    #2
    1. Advertising

  3. douxin

    MRAB Guest

    On 2013-01-18 03:12, Steven D'Aprano wrote:
    > On Fri, 18 Jan 2013 10:49:30 +0800, douxin wrote:
    >
    >> i use Popen to execute "su -c 'fdisk -l'" in sub process,and
    >> assigned subprocess.PIPE to stdin,stdout i tried to enter password
    >> by doing "stdin.write("password"+"\n")" and i expected i could get
    >> the output of "fdisk -l" by doing "stdout.read()"
    >> it didn't work.
    >>
    >> will somebody tell me what is going on with that?

    >
    > Would you like us to guess what happened? I love guessing games!
    >
    > My guess is that it output "su: incorrect password", which means you have
    > the wrong password. Is that it?
    >
    > If not, my guess is that it output "fdisk: command not found", in which
    > case your system is broken and the fdisk binary is missing or not on the
    > PATH. Am I close?
    >
    > Last guess: you got a Python traceback with an error:
    >
    > NameError: name 'subprocess' is not defined
    >
    > You need to import the subprocess first.
    >
    >
    > If none of my guesses are correct, could we have some hints? Perhaps show
    > us the actual code you are using, and the actual results, copied and
    > pasted exactly.
    >

    It may, of course, be that for security reasons it won't accept a
    password from
    whatever happens to be connected to stdin, but instead insists that it's
    entered
    directly from the keyboard, if you see what I mean.
    MRAB, Jan 18, 2013
    #3
  4. On Friday, January 18, 2013 9:30:29 AM UTC+5:30, MRAB wrote:
    > On 2013-01-18 03:12, Steven D'Aprano wrote:
    >
    > > On Fri, 18 Jan 2013 10:49:30 +0800, douxin wrote:

    >
    > >

    >
    > >> i use Popen to execute "su -c 'fdisk -l'" in sub process,and

    >
    > >> assigned subprocess.PIPE to stdin,stdout i tried to enter password

    >
    > >> by doing "stdin.write("password"+"\n")" and i expected i could get

    >
    > >> the output of "fdisk -l" by doing "stdout.read()"

    >
    > >> it didn't work.

    >
    > >>

    >
    > >> will somebody tell me what is going on with that?

    >
    > >

    >
    > > Would you like us to guess what happened? I love guessing games!

    >
    > >

    >
    > > My guess is that it output "su: incorrect password", which means you have

    >
    > > the wrong password. Is that it?

    >
    > >

    >
    > > If not, my guess is that it output "fdisk: command not found", in which

    >
    > > case your system is broken and the fdisk binary is missing or not on the

    >
    > > PATH. Am I close?

    >
    > >

    >
    > > Last guess: you got a Python traceback with an error:

    >
    > >

    >
    > > NameError: name 'subprocess' is not defined

    >
    > >

    >
    > > You need to import the subprocess first.

    >
    > >

    >
    > >

    >
    > > If none of my guesses are correct, could we have some hints? Perhaps show

    >
    > > us the actual code you are using, and the actual results, copied and

    >
    > > pasted exactly.

    >
    > >

    >
    > It may, of course, be that for security reasons it won't accept a
    >
    > password from
    >
    > whatever happens to be connected to stdin, but instead insists that it's
    >
    > entered
    >
    > directly from the keyboard, if you see what I mean.


    I think you are correct - su uses some tty magic to stop ECHO and probably doesn't read the password from stdin.
    Ramchandra Apte, Jan 18, 2013
    #4
  5. On Friday, January 18, 2013 9:30:29 AM UTC+5:30, MRAB wrote:
    > On 2013-01-18 03:12, Steven D'Aprano wrote:
    >
    > > On Fri, 18 Jan 2013 10:49:30 +0800, douxin wrote:

    >
    > >

    >
    > >> i use Popen to execute "su -c 'fdisk -l'" in sub process,and

    >
    > >> assigned subprocess.PIPE to stdin,stdout i tried to enter password

    >
    > >> by doing "stdin.write("password"+"\n")" and i expected i could get

    >
    > >> the output of "fdisk -l" by doing "stdout.read()"

    >
    > >> it didn't work.

    >
    > >>

    >
    > >> will somebody tell me what is going on with that?

    >
    > >

    >
    > > Would you like us to guess what happened? I love guessing games!

    >
    > >

    >
    > > My guess is that it output "su: incorrect password", which means you have

    >
    > > the wrong password. Is that it?

    >
    > >

    >
    > > If not, my guess is that it output "fdisk: command not found", in which

    >
    > > case your system is broken and the fdisk binary is missing or not on the

    >
    > > PATH. Am I close?

    >
    > >

    >
    > > Last guess: you got a Python traceback with an error:

    >
    > >

    >
    > > NameError: name 'subprocess' is not defined

    >
    > >

    >
    > > You need to import the subprocess first.

    >
    > >

    >
    > >

    >
    > > If none of my guesses are correct, could we have some hints? Perhaps show

    >
    > > us the actual code you are using, and the actual results, copied and

    >
    > > pasted exactly.

    >
    > >

    >
    > It may, of course, be that for security reasons it won't accept a
    >
    > password from
    >
    > whatever happens to be connected to stdin, but instead insists that it's
    >
    > entered
    >
    > directly from the keyboard, if you see what I mean.


    I think you are correct - su uses some tty magic to stop ECHO and probably doesn't read the password from stdin.
    Ramchandra Apte, Jan 18, 2013
    #5
  6. Re: [HELP!] a doubt about entering password in python

    On Fri, Jan 18, 2013 at 3:45 PM, Ramchandra Apte <> wrote:
    > I think you are correct - su uses some tty magic to stop ECHO and probably doesn't read the password from stdin.


    I believe that's right, but the 'sudo' command - at least on my Debian
    and Ubuntu systems - accepts a -S parameter to read from stdin instead
    of the terminal. Actually, sudo might be better suited to the OP's
    task anyway, if it's available.

    ChrisA
    Chris Angelico, Jan 18, 2013
    #6
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. otf
    Replies:
    5
    Views:
    3,741
    Roedy Green
    Nov 29, 2005
  2. Tuvas

    Password entering system

    Tuvas, Mar 10, 2006, in forum: Python
    Replies:
    4
    Views:
    363
    Tuvas
    Mar 10, 2006
  3. rodrigo
    Replies:
    3
    Views:
    764
    Ryan Ginstrom
    Oct 15, 2007
  4. AAaron123
    Replies:
    2
    Views:
    2,148
    AAaron123
    Jan 16, 2009
  5. Eric C.

    Entering password in shell

    Eric C., Dec 1, 2010, in forum: Ruby
    Replies:
    2
    Views:
    107
    Eric C.
    Dec 5, 2010
Loading...

Share This Page