Agregar varios usuarios a 1 grupo en debian10

Agregar varios usuarios a 1 grupo en debian10

vi lista de usuarios.txt

Tom
Josh
Noah

vi addgroup.sh

#!/bin/bash
for user in 'cat userlist.txt'
do
sudo usermod -a -G vncuser $user
done

sh agregargrupo.sh

Usage usermod [options] LOGIN

¿Cómo soluciono este error de "Uso de usermod [opciones] INICIAR SESIÓN"? Lo siento, soy principiante en esto, ¡gracias de antemano!

Respuesta1

Estás repitiendo "cat userlist.txt", no el contenido del archivo. Eso significa que $usuario será igual a "cat" y luego a "userlist.txt". Podrías agregar una línea de registro como:

echo "Adding user '$user' to group vncuser"

Cómo solucionarlo: utilice commandel formato de comilla invertida o paréntesis de dólares como $(comando). Prefiero el segundo porque es más fácil de leer.

for user in $(egrep -v "^#|^$" userlist.txt); do
  echo "Adding user '$user' to group 'vncuser'"
  sudo usermod -a -G vncuser $user
done

¿Qué hice aquí? Utilicé egrep para filtrar líneas que comienzan con # y líneas vacías.

Respuesta2

Comillas dobles en cada variable de línea:

while IFS= read -r line
do
  sudo usermod -a -G vncuser "$line"
done <userlist.txt

Luego haz un chmod +x filename.shantes de ejecutarlo.

Respuesta3

Primer paso: debe usar comillas invertidas (no comillas simples) o solo el $()operador

for user in $(cat userlist.txt) do
  sudo usermod -a -G vncuser $user
done

Además de eso, es posible que obtenga líneas vacías, por lo que

for user in $(cat userlist.txt) do
  test -n "$user" && sudo usermod -a -G vncuser $user
done

Y finalmente acabar con `cat

while read user ; do
  test -n "$user" && sudo usermod -a -G vncuser $user
done <userlist.txt

información relacionada