如何将新密码传递给smbpasswd,以便我可以自动完成安装过程。
答案 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)