将密码通过管道传送到 smbpasswd

发布于 2024-07-04 05:24:54 字数 44 浏览 8 评论 0原文

如何将新密码通过管道传输到 smbpasswd,以便我可以自动化安装过程。

How can I pipe the new password to smbpasswd so I can automate my installation process.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

等待圉鍢 2024-07-11 05:24:54

感谢马克,我找到了答案:

(echo newpassword; echo confirmNewPassword) | smbpasswd -s

顺便说一句:(echo oldpasswd; echo newpasswd) | smbpasswd -s 不起作用。

Thanks to Mark I found the answer:

(echo newpassword; echo confirmNewPassword) | smbpasswd -s

BTW: (echo oldpasswd; echo newpasswd) | smbpasswd -s does not work.

爱的十字路口 2024-07-11 05:24:54

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

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

使用 echo:

-e : 转义序列,如 \n

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

使用 smbpasswd:

-a : 添加新用户

-s : 静默

I use the following in one of my scripts:

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

With echo:

-e : escape sequences, like \n

-n : don't add implicit newline at end

With smbpasswd:

-a : add new user

-s : silent

等数载,海棠开 2024-07-11 05:24:54

尝试这样的事情:

(echo oldpasswd; echo newpasswd) | smbpasswd -s

Try something like this:

(echo oldpasswd; echo newpasswd) | smbpasswd -s
微凉 2024-07-11 05:24:54

用这个
回显'somepassword' | 三通- | smbpasswd -s

Use this
echo 'somepassword' | tee - | smbpasswd -s

缪败 2024-07-11 05:24:54

不幸的是,这并不可取,原因有两个:
1) 如果用户在密码中使用“\n”组合,则输入将不匹配
2)如果系统上有unix用户,那么使用实用程序ps的用户可能会看到密码

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

#!/usr/bin/python
#converted from: http://pexpect.sourceforge.net/pexpect.html
#child = pexpect.spawn('scp foo [email protected]:.')
#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'

This unfortunately is not desirable for two reasons:
1) if the user uses a combination of '\n' in the password there will be a mismatch in the input
2) if there are unix users on the system, then a user using the utility ps may see the password

A better way would be to put the names in a file and read from the file and use python pexpect to read them, not like below, but the simple script is enough to see how to use pexpect

#!/usr/bin/python
#converted from: http://pexpect.sourceforge.net/pexpect.html
#child = pexpect.spawn('scp foo [email protected]:.')
#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)

then try: ./smbpasswd.py userName1 'f#@(&*(_\n895'

梦幻的味道 2024-07-11 05:24:54

我必须在 Puppet 5.x Exec 资源中创建一个新的 Samba 用户,但由于各种原因,上述方法均不起作用。 幸运的是,这个看起来相当愚蠢的命令起作用了:

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

这里的密码当然是“vagrant”。

I had to create a new Samba user in a Puppet 5.x Exec resource and for various reasons none of the above worked. Fortunately this rather silly-looking command worked:

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

Password here is of course "vagrant".

你是我的挚爱i 2024-07-11 05:24:54

您不需要使用smbpasswd。 您可以获取新密码并计算其 NT 哈希值(使用 UTF-16-LE 编码并计算 MD4 摘要),将其编码为十六进制字符串,然后运行 ​​pdbedit -u USER --set-nt-hash =哈希。

You don't need to use smbpasswd. You can take your new password and calculate its NT hash (encode with UTF-16-LE and calculate the MD4 digest), encode it as a hexadecimal string, and then run pdbedit -u USER --set-nt-hash=HASH.

爱格式化 2024-07-11 05:24:54

使用管道重定向

using either pipelines or redirection.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文