管道密码为smbpasswd

时间:2008-08-15 06:08:55

标签: automation installation debian samba

如何将新密码传递给smbpasswd,以便我可以自动完成安装过程。

7 个答案:

答案 0 :(得分:41)

感谢Mark,我找到了答案:

(echo newpassword; echo confirmNewPassword) | smbpasswd -s

BTW :( echo oldpasswd; echo newpasswd)| smbpasswd -s不起作用。

答案 1 :(得分:23)

我在我的一个脚本中使用以下内容:

   echo -ne "$PASS\n$PASS\n" | smbpasswd -a -s $LOGIN

使用echo:

-e:转义序列,如\ n

-n:不要在结尾添加隐式换行符

使用smbpasswd:

-a:添加新用户

-s:沉默

答案 2 :(得分:11)

尝试这样的事情:

(echo oldpasswd; echo newpasswd) | smbpasswd -s

答案 3 :(得分:4)

使用它 echo 'somepassword' | tee - | smbpasswd -s

答案 4 :(得分:1)

遗憾的是,这有两个原因: 1)如果用户在密码中使用'\ n'的组合,则输入中将存在不匹配 2)如果系统上有unix用户,则使用该实用程序ps的用户可能会看到密码

更好的方法是将名称放在一个文件中并从文件中读取并使用python pexpect来读取它们,而不是像下面那样,但是简单的脚本足以看到如何使用pexpect

#!/usr/bin/python
#converted from: http://pexpect.sourceforge.net/pexpect.html
#child = pexpect.spawn('scp foo myname@host.example.com:.')
#child.expect ('Password:')
#child.sendline (mypassword)
import pexpect
import sys
user=sys.argv[1]
passwd=sys.argv[2]
child = pexpect.spawn('/usr/bin/smbpasswd -a '+str(user))
child.expect('New SMB password:')
child.sendline (passwd)
child.expect ('Retype new SMB password:')
child.sendline (passwd)

然后尝试:./ snmbww.py userName1'f#@(& *(_ \ n n895'

答案 5 :(得分:0)

我不得不在Puppet 5.x Exec资源中创建一个新的Samba用户,并且由于各种原因,上述方法均无效。幸运的是,此命令看起来很傻:

yes vagrant|head -n 2|smbpasswd -a -s vagrant

这里的密码当然是“无用的”。

答案 6 :(得分:-3)

使用pipelinesredirection