Bash

通過bash腳本自動輸入使用者輸入?

  • November 19, 2014

我正在創建一個 bash 腳本,它創建一個使用者並設置一個密碼。執行命令“passwd user”時,它要求使用者輸入密碼並停止我的腳本。

有沒有什麼方法可以在沒有使用者干預的情況下完成使用者輸入?

#!/bin/bash

yum -y update
adduser test-user
passwd test-user
"Password here?"

方法 #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"

這是一個非常糟糕的主意,但您可以在標準輸入中傳遞密碼:

passwd --stdin test-user <<< "Password here?"

引用自:https://unix.stackexchange.com/questions/168874