ユーザーを作成してパスワードを設定する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"
メモ:yum
例にコマンドが表示されているため、方法#2はRed Hatベースのディストリビューション(CentOSやRHELなど)を使用していると仮定しています。-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"