updated on Tue Jan 10 04:01:21 UTC 2012
[aur-mirror.git] / openadduser / openadduser-1.0
blob7d514466226c1b89541f5de1ac8901324c469d80
1 #!/bin/bash
2 # _ _
3 # ___ _ __ ___ _ __ __ _ __| | __| |_ _ ___ ___ _ __
4 # / _ \| '_ \ / _ \ '_ \ / _` |/ _` |/ _` | | | / __|/ _ \ '__|
5 # | (_) | |_) | __/ | | | (_| | (_| | (_| | |_| \__ \ __/ |
6 # \___/| .__/ \___|_| |_|\__,_|\__,_|\__,_|\__,_|___/\___|_|
7 # |_|
10 # NW
12 # "Works only if You suck really, really hard"
13 # (c) robmal
14 # thx ;-)
15 # (c) chori
17 # Konrad "chori" Szymaszek
18 # mail: konradek26@gmail.com
19 # gg: 7438749
21 # Skrypt Openadduser sluzy do dodawania nowych uzytkownikow do systemu.
22 # Polecany szczegolnie administratorom serwerow shell.
24 # Skrypt jest w fazie rozwojowej, ale dziala poprawnie i nie uszkadza systemu.
25 # Serdeczne bog zaplac dla : Komornik, mith, robmal, klupek, Staszek, jceel, Partition.
27 [ ! "`id -u`" = "0" ] && echo "Nie masz odpowiednich uprawnien by uruchomic ten skrypt." && exit;
28 pwgen_sc=$( which pwgen > /dev/null 2>&1 )
29 [ ! -e $pwgen_sc ] && echo "Nie odnaleziono narzedzia pwgen w systemie. Konczenie pracy programu openadduser" && exit;
31 function backup
32 { cp /etc/shadow /etc/shadow-openadduser; cp /etc/passwd /etc/passwd-openadduser; cp /etc/group /etc/group-openadduser; }
33 function ok
34 { echo "Pomyslne! :-)"; }
35 function not_ok
36 { echo "Nie odnaleziono."; echo "Konczenie pracy programu opeadduser"; echo; exit; }
38 clear
40 backup
41 echo;
42 echo "Tworzenie kopii zapasowych plikow shadow | passwd | group...";
43 echo "Kopie zapasowe znajduja sie w katalogu /etc i maja dodana do nazwy koncowke "-openadduser"";
44 echo;
46 echo "-----------------";
47 echo -e '\E[37;44m'"\033[1m Openadduser \033[0m"
48 echo "-----------------";
49 echo;
51 echo -ne "\033[1m[ Login ]: \033[0m"; read user
52 [ -z $user ] && user=$(pwgen -1 -n 8)
53 echo "$user" | grep "[^[:alnum:]$]" > /dev/null 2>&1 && echo "Wprowadzono bledna nazwe uzytkownika. Konczenie pracy programu openadduser" && exit;
55 echo -ne "\033[1m[ Komentarz ]: \033[0m"; read pre_comment
56 [ -z "$pre_comment" ] && pre_comment="Openadduser";
57 comment=$( echo $pre_comment | sed s/\ /./g )
59 echo -ne "\033[1m[ UID ( kolejny wolny ) ]: \033[0m"; read uid
60 echo "$uid" | grep '[^[:digit:]$]' > /dev/null 2>&1 && echo "Wprowadzono bledny uid. Konczenie pracy programu openadduser" && exit;
61 [ -z $uid ] && export liczba="1" && export temp=`tempfile` && awk -F: '{ print $3 }' /etc/passwd | grep -v '65534' | sort -g > $temp && last_uid=$( sort -k3 -t: -n /etc/passwd | awk -F: '{if ($3 >= 1000 && $3 < 8000) print $3; }' | tail -n1 )
62 [ $last_uid -lt 1000 ] && export uid=$lastuid
63 [ $last_uid -ge 1000 ] && let uid=last_uid+liczba
65 echo -ne "\033[1m[ Grupa ( users ) ]: \033[0m"; read group
66 [ -z $group ] && export group="users"
67 echo "$group" | grep '[^[:alnum:]$]' > /dev/null 2>&1 && echo "Wprowadzono bledna nazwe grupy. Konczenie pracy programu openadduser" && exit;
68 echo -ne "\033[1m[ Shell ( /bin/bash ) ]: \033[0m"; read shell;
70 while [ ! -e $shell ]; do echo "Wprowadzona powloka nie istnieje." && echo -ne "\033[1m[ Shell ( /bin/bash ) ]: \033[0m" && read shell; done;
71 [ -z $shell ] && export shell="/bin/bash"
73 echo -ne "\033[1m[ Home ( /home/$user ) ]: \033[0m"; read home;
74 [ -z $home ] && export home="/home/$user"
76 echo -ne "\033[1m[ Dlugosc hasla ( 8 ) ]: \033[0m"; read ile;
77 [ -z $ile ] && export ile="8"
78 echo "$ile" | grep '[^[:digit:]$]' > /dev/null 2>&1 && echo "Wprowadzono bledna wartosc. Konczenie pracy programu openadduser" && exit;
80 clear;
82 echo "-----------------";
83 echo -e '\E[37;41m'"\033[1m Podsumowanie \033[0m"
84 echo "-----------------";
85 echo -ne "\033[1m[ Login ]....: \033[0m"; echo "$user";
86 echo -ne "\033[1m[ Komentarz ]: \033[0m"; echo "$comment";
87 echo -ne "\033[1m[ UID ]......: \033[0m"; echo "$uid";
88 echo -ne "\033[1m[ Grupa ]....: \033[0m"; echo "$group";
89 echo -ne "\033[1m[ Shell ]....: \033[0m"; echo "$shell";
90 echo -ne "\033[1m[ Home ].....: \033[0m"; echo "$home";
91 echo -ne "\033[1m[ Haslo ]....: \033[0m"; echo "$ile znakow";
92 echo "--------------------------------------"; echo;
93 echo "Nacisnij enter aby kontynuowac, CTRL+C zeby anulowac dodawanie...";
94 read decision
95 [ -z $decision ];
97 clear;
99 echo "Tworzenie uzytkownika $user";
100 useradd $user -m -d $home -s $shell -u $uid -c $comment
101 chmod 700 $home
102 cat /etc/group | grep -v $user:x: > /tmp/group; mv /tmp/group /etc/group;
103 [ `grep $group /etc/group` ] && echo "Grupa $group istnieje, tworzenie pominiete" && gpasswd -a $user $group || echo "Grupa $group nie istnieje, zostaje stworzona" && groupadd $group && gpasswd -a $user $group
104 echo;
106 echo -e "\033[1m0. Generowanie $ile znakowego hasla dla uzytkownika $user\033[0m";
107 [ -n $ile ] && ok
108 file=`tempfile`
109 >$file
110 p=$(pwgen -1 -n $ile)
111 echo "$user:$p" >> $file
112 chpasswd < $file
114 echo;
115 echo -e "\033[1m1. Sprawdzanie istnienia katalogu domowego\033[0m";
116 [ -e $home ] && ok || not_ok
118 echo;
119 echo -e "\033[1m2. Sprawdzanie istnienia wpisu w /etc/passwd\033[0m";
120 [ `grep $user /etc/passwd` ] && ok || not_ok
122 echo;
123 echo -e "\033[1m3. Sprawdzanie istnienia wpisu w /etc/shadow\033[0m";
124 [ `grep $user /etc/shadow` ] && ok || not_ok
126 echo;
127 echo -e "\033[1m4. Sprawdzanie istnienia wpisu w /etc/group\033[0m";
128 [ `grep $group /etc/group` ] && ok || not_ok
130 echo;
131 echo "Haslo uzytkownika $user ustalone podczas pracy programu to: $p";
132 echo "Dodawanie uzytkownika zakonczone powodzeniem.";
133 echo "Konczenie pracy programu opeadduser"; echo;
134 rm /etc/*-openadduser;
135 exit;