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"

メモ: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.

最新バージョンには、useraddRed 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"

関連情報