【发布时间】:2010-09-05 22:27:34
【问题描述】:
如何将新密码通过管道传输到 smbpasswd,以便自动执行安装过程。
【问题讨论】:
标签: automation installation debian samba
如何将新密码通过管道传输到 smbpasswd,以便自动执行安装过程。
【问题讨论】:
标签: automation installation debian samba
感谢马克,我找到了答案:
(echo newpassword; echo confirmNewPassword) | smbpasswd -s
顺便说一句:(回声旧密码;回声新密码)| smbpasswd -s 不起作用。
【讨论】:
我在我的一个脚本中使用了以下内容:
echo -ne "$PASS\n$PASS\n" | smbpasswd -a -s $LOGIN
有回声:
-e : 转义序列,如 \n
-n : 不要在末尾添加隐式换行符
使用 smbpasswd:
-a : 添加新用户
-s : 沉默
【讨论】:
echo -ne "$PASS\n" | tee - | smbpasswd -a -s $LOGIN?
试试这样的:
(echo oldpasswd; echo newpasswd) | smbpasswd -s
【讨论】:
使用这个
echo 'somepassword' | tee - | smbpasswd -s
【讨论】:
RUN PASS=myrootpassword ; echo ${PASS} | tee - | smbpasswd -a -s
我不得不在 Puppet 5.x Exec 资源中创建一个新的 Samba 用户,但由于各种原因,上述方法均无效。幸运的是,这个看起来很傻的命令奏效了:
yes vagrant|head -n 2|smbpasswd -a -s vagrant
这里的密码当然是“vagrant”。
【讨论】:
不幸的是,这并不可取,原因有两个: 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)
然后尝试:./smbpasswd.py userName1 'f#@(&*(_\n895'
【讨论】:
使用pipelines 或redirection。
【讨论】: