Niestety internet i poradniki mi nie pomogły (tak- szukałem), a jak coś było, to nie do zrozumienia dla kogoś kto zaczyna z zabawą, a na zagłębianie się przez pół roku przez kolejne hasła brak mi ochoty, sił i czasu.
Chcę stworzyć skrypt umożliwiający dodawanie nowych użytkowników z katalogiem domowym z pliku gdzie są w dwóch kolumnach login i hasło.
Tutaj: http://forums.devshed.com/scripts-94/sh ... 81336.html
trafiłem na następujący kod:
Kod: Zaznacz cały
#!/bin/bash
# Script to add a user to Linux system
if [ $(id -u) -eq 0 ]; then
read -p "Enter username : " username
read -s -p "Enter password : " password
egrep "^$username" /etc/passwd >/dev/null
if [ $? -eq 0 ]; then
echo "$username exists!"
exit 1
else
pass=$(perl -e 'print crypt($ARGV[0], "password")' $password)
useradd -m -p $pass $username
[ $? -eq 0 ] && echo "User has been added to system!" || echo "Failed to add a user!"
fi
else
echo "Only root may add a user to the system"
exit 2
fi
- Co to za zmienna $? Coś kojarzy mi się z wynikiem egrep który jest wyżej, bo o to chodzi w tym if-ie, żeby sprawdzić, czy user istnieje a grep zwróci pasującą linijkę? Tylko że nigdzie nie zapisujemy do żadnego $? a nawet wynik grepa wywalamy do Więc o co chodzi?
Kod: Zaznacz cały
/dev/null
- Czym jest pierwszy argument w crypt()? w sensie rozumiem, ze trzeba zakodować hasło do useradd, ale nie wiem czemu ARGV[0]? Bo z tego co testowałem to chyba jest to klucz do kodowania, ale co i jak dalej, jaki to klucz jest? Nie kminie...