Es fundamental entender el código de forma correcta previamente a adaptarlo a tu trabajo y si tdeseas aportar algo puedes comentarlo.
Solución:
Desde man chpasswd
:
‘Este comando está diseñado para usarse en un entorno de sistema grande donde se crean muchas cuentas al mismo tiempo.’
passwd
(según mi experiencia) normalmente se usa de forma interactiva para un solo usuario.
Vea las páginas de manual para ambos:
NOMBRE
chpasswd – actualizar contraseñas en modo por lotes
SINOPSIS
chpasswd
[options]DESCRIPCIÓN
los
chpasswd
El comando lee una lista de pares de nombre de usuario y contraseña de la entrada estándar y usa esta información para actualizar un grupo de usuarios existentes. Cada línea tiene el formato:usuario Contraseña
NOMBRE
passwd – cambiar contraseña de usuario
SINOPSIS
passwd
[options] [LOGIN]DESCRIPCIÓN
los
passwd
El comando cambia las contraseñas de las cuentas de usuario. Un usuario normal solo puede cambiar la contraseña de su propia cuenta, mientras que el superusuario puede cambiar la contraseña de cualquier cuenta.
passwd
también cambia el período de validez de la cuenta o contraseña asociada.
En una palabra:
-
passwd
comprueba si el STDIN (descriptor de archivo 0) está conectado a la terminal, usandoisatty(0)
. Que no,passwd
rescataría, es decir, solo puede trabajar conpasswd
interactivamente -
chpasswd
, por otro lado, está diseñado para leer (nombre de usuario y) contraseña de STDIN, y se denomina modo por lotes (crea/actualiza varias credenciales de usuario a la vez). Lee la(s) contraseña(s) (en texto sin cifrar de forma predeterminada) y el(los) nombre(s) de usuario de STDIN, proporcionados en el formatouser_name:password
con nueva línea separando las entradas