Fügen Sie in Debian10 mehrere Benutzer zu einer Gruppe hinzu

Fügen Sie in Debian10 mehrere Benutzer zu einer Gruppe hinzu

vi Benutzerliste.txt

Tom
Josh
Noah

vi addgroup.sh

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

sh addgroup.sh

Usage usermod [options] LOGIN

wie löse ich diesen „Usage usermod [options] LOGIN“-Fehler? Entschuldigung, ich bin ein Anfänger auf diesem Gebiet, danke im Voraus!

Antwort1

Sie durchlaufen eine Schleife mit „cat userlist.txt“, nicht mit dem Inhalt der Datei. Das bedeutet, dass $user gleich „cat“ und dann gleich „userlist.txt“ ist. Sie könnten eine Protokollzeile wie diese hinzufügen:

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

So beheben Sie das Problem: Verwenden Sie entweder Backtick- commandoder Dollarklammernformat wie $(Befehl). Ich bevorzuge das zweite Format, weil es leichter zu lesen ist.

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

Was habe ich hier gemacht? Ich habe egrep verwendet, um Zeilen zu filtern, die mit einem # beginnen, und leere Zeilen.

Antwort2

Jede Zeilenvariable wird in doppelte Anführungszeichen gesetzt:

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

Führen Sie dann ein aus, chmod +x filename.shbevor Sie es ausführen.

Antwort3

Erster Schritt: Sie müssen entweder Backticks (keine einfachen Anführungszeichen) oder nur den $()Operator

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

Darüber hinaus erhalten Sie möglicherweise leere Zeilen.

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

Und endlich Schluss mit „Katze“

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

verwandte Informationen