【问题标题】:How do I write a password using a bash script?如何使用 bash 脚本编写密码?
【发布时间】:2014-05-20 18:57:26
【问题描述】:

我正在尝试用 4 个树莓派构建一个树莓派集群。 我正在编写一个脚本来向系统添加新用户,这样用户就可以添加到所有 4 个 Pi 上,而无需多次输入。我正在使用的命令是 adduser,我正在使用 ssh 将用户添加到所有 4 个 Pis 上。这是脚本中该行的外观:

echo `ssh pi@10.10.10.13 "sudo adduser --shell /bin/bash user1"`

这是我用来添加新用户的行。但是,这之后的命令是我需要更改密码的地方。如果我使用

sudo passwd user1

在脚本中,对于每个 Pi,它会提示用户输入密码 4 次。我不希望这种情况发生。有没有办法让用户输入一次密码并将其存储在变量中并将其提供给 passwd 命令?

【问题讨论】:

标签: linux bash raspberry-pi raspbian


【解决方案1】:

假设 Pi 上仍然没有“useradd”,我建议您开始研究 adduser 的命令行参数?

adduser <username> -p <password> ...

【讨论】:

  • 其实还有useradd命令。我只是使用 adduser 因为我熟悉该命令。 adduser 中有 --disable-password 选项,但我认为这只会禁用密码并允许您通过 ssh 或其他方式登录。我真的不明白它是如何工作的。 useradd 命令有一个 --password 选项,我可以通过它设置默认密码。我想我现在就试试。谢谢!
  • @user3657965:我只知道 --disabled-password 如果服务器的管理员不想知道用户的密码,这很有用。但是,这仍然需要一些操作,因为用户应该使用 passwd 设置帐户的密码。如果您真的想自动化用户创建过程,我建议 useradd 使用 --passwd 选项。在准备预配置的 Samba 服务器时,我经常这样做......
  • 谢谢。我现在正在尝试这样做,但我在加密密码时遇到了很大的问题。以前从未处理过加密,我有点迷茫,crypt() 函数显然适用于 C?关于如何解决这个问题的任何建议?
【解决方案2】:

这是一种通过 SSH 在远程端使用 sudo 执行许多命令的方法(如果不能以 root 身份登录):

#!/bin/bash

ssh user@host 'sudo bash -es' <<EOF
command 1
command 2
EOF

-e 为“失败时失败”(可选)。

-s 从 STDIN 读取。

(我快速尝试了一下,它似乎可以工作。)

编辑

我尝试使用 -x(我喜欢反馈),但它使输出出现乱码,可能是因为 STDIN 和 STDERR “不同步”(可以使用 2&gt;&amp;1 “解决”)。

【讨论】:

  • 感谢您的回答。我不确定这会对我有帮助。假设命令 1 是 adduser,命令 2 是 passwd,每次执行这三行时(在我的例子中是 4 次),用户仍然会被提示输入新密码。
  • @user3657965 哦,那我一定是误会了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-15
  • 2011-09-25
  • 2013-09-29
  • 2018-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多