Нужна помощ в отладке bash-скрипта для автоматического добавления/удаления пользователей.
Всю инфу скрипт берёт из файла с разделителем "|".
При запуске скрипт выдаёт ошибки:
line 63: неожиданный EOF при поиске соответствующего `"'
line 71: ошибка синтаксиса: неожиданный конец файлаМожет кто сталкивался с подобным и знает в чём моя ошибка, кроме днк?
Собственно скрипт:
1 #!/bin/bash
2 #
3 #
4 ########environment declaration
5 ufile=/tmp/incom
6 td="" #add or del
7 field= #первое поле
8 ulogin= #user login
9 upass="" #user pass
10 ugroups="" #user groups
11 strnum=1 #nomer stroki poiska
12 str="" #string
13 str1="add" #string1
14 str2="del" #string2
15 dels="" #number of first string of del section
16 filend="" #number of last string
17 uopt="" #option of del sect. that define delete homedir of usr or not
18 n=1 # Счётчик
19 #end of declaration
20 #
21 #Проверка наличия файла
22 if [ -e $ufile ]
23 then
24 dels=`cat /tmp/incom -n|grep "#delete" -i|awk '{print $1}'`
25 filend=`cat /tmp/incom -n|grep end -i|awk '{print $1}'`
26 else
27 echo "File not faund"
28 exit 0
29 fi
30 #
31 echo $dels
32 echo $filend
33 echo $strnum
34 #
35 for field in $(awk 'BEGIN{FS="|"}{print $1}' < "$ufile" )
36 do
37 td=`sed -n '$n p' $ufile| grep add |awk 'BEGIN {FS = "|"};{print $1}'`
38 #Проверка на добавление
39 if [ "$td -eq "$str1" ]
40 then
41 # polu4aem dannie uchetki
42 ulogin=`sed -n '$n p' $ufile| grep add |awk 'BEGIN {FS = "|"};{print $2}'`
43 ugroups=`sed -n '$n p' $ufile| grep add |awk 'BEGIN {FS = "|"};{print $3}'`
44 upass=`sed -n '$n p' $ufile| grep add |awk 'BEGIN {FS = "|"};{print $4}'`
45 #тест
46 echo "добавлен пользователь login= $ulogin, group= $ugroups, pass= $upass"
47 #тест
48 useradd "$ulogin" -G "$ugroups" -m -p "$upass" #dobavlaem usera s sozdaniem homedir #Добавляем юзера
49 echo "useradd "$ulogin" -G "$ugroups" -m -p "$upass""
50 fi
51 #
52 if [ $td -eq "$str2" ] #proverka na udalenie
53 then
54 ulogin=`sed -n '$n p' $ufile| grep add |awk 'BEGIN {FS = "|"};{print $2}'`
55 uopt=`sed -n '$n p' $ufile| grep add |awk 'BEGIN {FS = "|"};{print $3}'`
56 userdel --$uopt $ulogin
57 echo "userdel --$uopt $ulogin"
58 #тест
59 echo "удалён пользователь login= $ulogin, op= $uoupt"
60 #тест
61 fi
62 #
63 if ["$n" -eq "$str2"]
64 then
65 exit 0
66 else
67 let n=n+1
68 fi
69 done
70 exit 0
Файл который он разгребает:
1 #ADD
2 ##ToDo | login | groups |pass
3 #---------------------------------------------------------------------------------
4 add|testovich|users,dialout,dip,video,lpadmin |lolodin
5 add|testova|users,dialout,dip,video,lpadmin |lolodin
6
7 #DELETE
8 ##TODO | Login |remove homdir or not
9 #---------------------------------------------------------------------------------
10
11
12 #TEST
13
14 #End.
система:
uname -a:
Linux test-laptop 2.6.28-11-generic #42-Ubuntu SMP Fri Apr 17 01:57:59 UTC 2009 i686 GNU/Linux