Same code cause the different result.

Jean-Michel Pichavant jeanmichel at sequans.com
Wed Apr 25 05:22:38 EDT 2012


叶佑群 wrote:
> Hi, all
>
>    I have code as:
> /            pobj = subprocess.Popen (["smbpasswd", user], stdin 
> =subprocess.PIPE)
>             password += "\n"
>             pobj.stdin.write (password)
>             pobj.stdin.write (password)/
>
>     the command smbpasswd will change the samba user's password, In 
> shell this will run as below:
>
> /            [root at localhost ~]# smbpasswd mytest1
>             New SMB password:
>             Retype new SMB password:
>             [root at localhost ~]# /
>
>     but in python code, it always prompt to wait input the password, 
> it is seems that pobj.stdin.write () doesn't work. It is anything 
> wrong with my code? I have another block code that runs as expected:
>
> /            pobj = subprocess.Popen (["passwd", user], stdin = 
> subprocess.PIPE)
>             password = password + "\n"
>             pobj.stdin.write (password)
>             pobj.stdin.write (password)/
>
>     It is so curious and I wonder why.It is the same result when 
> substitute smbpasswd with pdbedit.
I'm totally *not* an expert in those kind of things but I remember 
someone saying that sometimes, and especialy when asking for password, 
unix program do not use stdin.

However, it looks like you can use an command line option to change the 
password:

http://lists.samba.org/archive/samba/2004-August/091019.html

Cheers,

JM



More information about the Python-list mailing list