我正在创建一个 bash 脚本,该脚本创建用户并设置密码。运行命令“passwd user”时,它要求用户输入密码并停止我的脚本。
有没有什么方法可以在不需要用户干预的情况下完成用户输入?
#!/bin/bash
yum -y update
adduser test-user
passwd test-user
"Password here?"
答案1
这是一个真是个坏主意,但您可以在标准输入上传递密码:
passwd --stdin test-user <<< "Password here?"
答案2
方法#1 - 使用 passwd
您可以通过脚本执行类似的操作:
echo -n "$passwd" | passwd "$uname" --stdin
其中您要设置的密码是$passwd
,您要为其设置密码的用户是$uname
。
方法#2 - 使用 useradd
您还可以useradd
直接将其提供给:
useradd -n -M -s $shell -g $group -d "/home/$homedir" "$uname" -p "$passwd"
笔记:假设您在方法 #2 中使用基于 Red Hat 的发行版(例如 CentOS 或 RHEL),因为您的示例显示了yum
命令。-n
例如,开关位于旧版本中useradd
:
-n A group having the same name as the user being added to the system
will be created by default. This option will turn off this
Red Hat Linux specific behavior. When this option is used, users by
default will be placed in whatever group is specified in
/etc/default/useradd. If no default group is defined, group 1 will be
used.
现在的较新版本useradd
在 Red Hat 和非 Red Hat 发行版上都有这样的选项:
-N, --no-user-group
Do not create a group with the same name as the user, but add the
user to the group specified by the -g option or by the GROUP
variable in /etc/default/useradd.
因此,您可以将此命令用于其他发行版:
useradd -N -M -s $shell -g $group -d "/home/$homedir" "$uname" -p "$passwd"