当我发出以下命令时,我想在特定组中创建一个新用户。
sudo ./create_user.sh "test" "firstname lastname"
该create_user.sh
脚本如下所示。
#!bin/bash
#sudo adduser --gecos "$2" --ingroup testgroup $1
然而,问题是,我必须避免使用此处文档插入密码(应该只是测试),但我不知道语法。
我尝试了一些解决方案,但似乎都不起作用。
这就是我在脚本中尝试的heredocument的样子
#<< EOF
#test
#test
#EOF
我的输出看起来像这样
#adding user 'test' ...
#adding new user 'test' <1003> with group 'testgroup' ...
#Enter new UNIX password:
答案1
adduser
调用该passwd
实用程序来设置密码。与许多提示输入密码的程序一样,passwd
它坚持其输出来自终端。因此,您无法通过此处文档传递输入 - 创建临时文件或管道,但passwd
两者都不接受。
如果您不想使用密码登录,您可以忽略adduser
(至少是 Debian 版本)该选项(如果您设置了 SSH 密钥,您仍然可以使用其他方法登录) --disabled-password
。adduser
没有传递密码散列(不是密码本身)的选项,但useradd
Linux 影子密码实用程序套件有。
如果您想在创建帐户期间输入密码,请确保passwd
从终端读取密码。如果您从其他来源(例如 Web 表单)获取密码,请passwd
从预计脚本 - 例子。
如果这是使用此处文档的练习,则密码不是您应该使用的地方。我没有看到这里的文档可以解决您发布的内容中的任何问题。