通过bash脚本自动输入用户输入?

通过bash脚本自动输入用户输入?

我正在创建一个 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"

相关内容