The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги | ]



"Проверить существование строки в кронтабе со сппецсимовлами *"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Shell скрипты)
Изначальное сообщение [ Отслеживать ]

"Проверить существование строки в кронтабе со сппецсимовлами *"  +/
Сообщение от universite (ok) on 18-Мрт-18, 06:00 
Subj на Debian 8.

Пробую разные варианты, но или баш интерпретируют * как показать файлы, то "grep: заданы конфликтующие образцы"


if [ $(egrep -P "^\* \* \* \* \* /bin/bash /root/script.sh > /dev/null" /var/spool/cron/crontabs/root) ]; then
        echo "good";
                else
        echo bad;
fi

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Проверить существование строки в кронтабе со сппецсимовлами *"  +/
Сообщение от михалыч (ok) on 18-Мрт-18, 08:53 
perl ?

perl -lne 'print "ok" if m|\*\s+\*\s+\*\s+\*\s+\*\s+/bin/bash /root/script.sh > /dev/null|' /var/spool/cron/crontabs/root

можно конечно и без \s+ но кто знает tab там или пробел и сколько их

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Проверить существование строки в кронтабе со сппецсимовлами *"  –1 +/
Сообщение от universite (ok) on 18-Мрт-18, 20:29 
> perl ?
> perl -lne 'print "ok" if m|\*\s+\*\s+\*\s+\*\s+\*\s+/bin/bash /root/script.sh
> > /dev/null|' /var/spool/cron/crontabs/root
> можно конечно и без \s+ но кто знает tab там или пробел
> и сколько их

Перл работает.
А grep? awk?

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

6. "Проверить существование строки в кронтабе со сппецсимовлами *"  +/
Сообщение от Pahanivo (ok) on 19-Мрт-18, 00:15 
^\s*\*\s+\*\s+\*\s+\*\s+\*\s+/bin/bash\s+/root/script.sh\s*$

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Проверить существование строки в кронтабе со сппецсимовлами *"  +/
Сообщение от Аноним (??) on 18-Мрт-18, 23:05 
Убери "-P" и должно работать.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

4. "Проверить существование строки в кронтабе со сппецсимовлами *"  +/
Сообщение от universite (ok) on 18-Мрт-18, 23:10 
> Убери "-P" и должно работать.


# sh test8.sh
+ egrep ^\* \* \* \* \* /bin/bash /root/script.sh > /dev/null /var/spool/cron/crontabs/root
+ [ ftp_access.file system_info test2.sh test3.sh test4.sh test5.sh test6.sh test7.sh test8.sh ftp_access.file script.sh system_info test2.sh test3.sh test4.sh test5.sh test6.sh test7.sh test8.sh ftp_access.file script.sh system_info test2.sh test3.sh test4.sh test5.sh test6.sh test7.sh test8.sh ftp_access.file script.sh system_info test2.sh test3.sh test4.sh test5.sh test6.sh test7.sh test8.sh ftp_access.file script.sh system_info test2.sh test3.sh test4.sh test5.sh test6.sh test7.sh test8.sh /bin/bash script.sh  > /dev/null ]
test8.sh: 5: [: ftp_access.file: unexpected operator
+ echo bad
bad


Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "Проверить существование строки в кронтабе со сппецсимовлами *"  +/
Сообщение от Аноним (??) on 18-Мрт-18, 23:35 

#!/bin/bash
egrep "^\* \* \* \* \* /bin/bash /root/script.sh > /dev/null" /var/spool/cron/crontabs/root
if (($?)); then
    echo "bad"
else
    echo "good"
fi

А Debian sh в вообще bash?

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

7. "Проверить существование строки в кронтабе со сппецсимовлами *"  +/
Сообщение от universite (ok) on 19-Мрт-18, 05:58 
>
 
> #!/bin/bash
> egrep "^\* \* \* \* \* /bin/bash /root/script.sh > /dev/null" /var/spool/cron/crontabs/root
> if (($?)); then
>     echo "bad"
> else
>     echo "good"
> fi
>

> А Debian sh в вообще bash?


-rwxr-xr-x 1 root root 1029624 ноя  5  2016 /bin/bash
lrwxrwxrwx 1 root root       4 ноя  8  2014 /bin/sh -> dash

Ошибки все равно одинаковые.

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

8. "Проверить существование строки в кронтабе со сппецсимовлами *"  +/
Сообщение от Pahanivo (ok) on 19-Мрт-18, 09:58 
> if [ $(egrep -P "^\* \* \* \* \* /bin/bash /root/script.sh >

проверил на старой фре работает, на старом линухе НЕ работает, также
> egrep -P  "1" *

egrep: conflicting matchers specified
но если использовать просто grep
> grep -P "^.*01.*\*" *

crontab:01 * * * * root run-parts /etc/cron.hourly
то однако работает ...

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

9. "Проверить существование строки в кронтабе со сппецсимовлами *"  +/
Сообщение от Аноним (??) on 19-Мрт-18, 10:59 
>> if [ $(egrep -P "^\* \* \* \* \* /bin/bash /root/script.sh >
> проверил на старой фре работает, на старом линухе НЕ работает, также
>> egrep -P  "1" *
> egrep: conflicting matchers specified
> но если использовать просто grep
>> grep -P "^.*01.*\*" *
> crontab:01 * * * * root run-parts /etc/cron.hourly
> то однако работает ...

Потому, что egrep это grep -E, a -E и -P конфликтуют.

$ cat /bin/egrep
#!/bin/sh
exec grep -E "$@"

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

10. "Проверить существование строки в кронтабе со сппецсимовлами *"  +/
Сообщение от pavlinux (ok) on 19-Мрт-18, 19:53 
>
> "grep: заданы конфликтующие образцы"
>
 
> if [ $(egrep -P "^\* \* \* \* \* /bin/bash /root/script.sh > /dev/null" /var/spool/cron/crontabs/root) ];


grep  "^[*] [*] [*] [*] [*] /bin/bash /root/script.sh [>] /dev/null"

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

13. "Проверить существование строки в кронтабе со сппецсимовлами *"  +/
Сообщение от universite (ok) on 20-Мрт-18, 06:02 
>>
>> "grep: заданы конфликтующие образцы"
>>
 
>> if [ $(egrep -P "^\* \* \* \* \* /bin/bash /root/script.sh > /dev/null" /var/spool/cron/crontabs/root) ];

>
 
> grep  "^[*] [*] [*] [*] [*] /bin/bash /root/script.sh [>] /dev/null"
>

Тоже самой, что и выше. * считается как все файлы внутри директории.


# sh test10.sh
+ grep ^[*] [*] [*] [*] [*] /bin/bash /root/script.sh [>] /dev/null /var/spool/cron/crontabs/root
+ [ ftp_access.file script.sh system_info test10.sh test2.sh test3.sh test4.sh test5.sh test6.sh test7.sh test8.sh test9.sh ftp_access.file script.sh system_info test10.sh test2.sh test3.sh test4.sh test5.sh test6.sh test7.sh test8.sh test9.sh ftp_access.file script.sh system_info test10.sh test2.sh test3.sh test4.sh test5.sh test6.sh test7.sh test8.sh test9.sh ftp_access.file script.sh system_info test10.sh test2.sh test3.sh test4.sh test5.sh test6.sh test7.sh test8.sh test9.sh ftp_access.file script.sh system_info test10.sh test2.sh test3.sh test4.sh test5.sh test6.sh test7.sh test8.sh test9.sh /bin/bash /root/script.sh > /dev/null ]
test10.sh: 7: [: ftp_access.file: unexpected operator
+ echo bad
bad


Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

14. "Проверить существование строки в кронтабе со сппецсимовлами *"  +/
Сообщение от Andrey Mitrofanov on 20-Мрт-18, 09:17 
>> grep  "^[*] [*] [*] [*] [*] /bin/bash /root/script.sh [>] /dev/null"
> Тоже самой, что и выше. * считается как все файлы внутри директории.

Кто у Вас шелл ? Или куда и как эту команду вставляете и кто её исполняет, разные ли это "люди"?

Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору

18. "Проверить существование строки в кронтабе со сппецсимовлами *"  –1 +/
Сообщение от pavlinux (ok) on 20-Мрт-18, 14:23 
>>> grep  "^[*] [*] [*] [*] [*] /bin/bash /root/script.sh [>] /dev/null"
>> Тоже самой, что и выше. * считается как все файлы внутри директории.
> Кто ... куда ... как ... и кто ...?

Опять путает консоли, на BSD небось :)


Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору

21. "Проверить существование строки в кронтабе со сппецсимовлами *"  +/
Сообщение от universite (ok) on 20-Мрт-18, 17:52 
>>>> grep  "^[*] [*] [*] [*] [*] /bin/bash /root/script.sh [>] /dev/null"
>>> Тоже самой, что и выше. * считается как все файлы внутри директории.
>> Кто ... куда ... как ... и кто ...?
> Опять путает консоли, на BSD небось :)

Если бы для BSD тестил - сразу бы написал.
Не надо гнать.

Ответить | Правка | ^ к родителю #18 | Наверх | Cообщить модератору

20. "Проверить существование строки в кронтабе со сппецсимовлами *"  +/
Сообщение от universite (ok) on 20-Мрт-18, 17:52 
>>> grep  "^[*] [*] [*] [*] [*] /bin/bash /root/script.sh [>] /dev/null"
>> Тоже самой, что и выше. * считается как все файлы внутри директории.
> Кто у Вас шелл ? Или куда и как эту команду вставляете
> и кто её исполняет, разные ли это "люди"?

Скрипт запускал через sh, bash и dash.
Одинаковый результат.

Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору

17. "Проверить существование строки в кронтабе со сппецсимовлами *"  +/
Сообщение от pavlinux (ok) on 20-Мрт-18, 13:59 
> Тоже самой, что и выше. * считается как все файлы внутри директории.
> # sh test10.sh
> + grep ^[*] [*] [*] [*] [*] /bin/bash /root/script.sh [>] /dev/null /var/spool/cron/crontabs/root

[ ] - это IEEE Std 1003.1, 2004 (POSIX1), 9.3.5 RE Bracket Expression
Я на 146% поверю POSIX, чем в нежопорукость. Оно даже на Венде должно сработать.


$ cat test10.sh

grep  "^[*] [*] [*] [*] [*] /bin/bash /root/script.sh [>] /dev/null" /tmp/test;


$ cat /tmp/test

* * * * * /bin/bash /root/script.sh > /dev/null

$ /bin/bash -x  test10.sh
+ grep '^[*] [*] [*] [*] [*] /bin/bash /root/script.sh [>] /dev/null' /tmp/test
* * * * * /bin/bash /root/script.sh > /dev/null

$ /bin/dash -x test10.sh
+ grep ^[*] [*] [*] [*] [*] /bin/bash /root/script.sh [>] /dev/null /tmp/test
* * * * * /bin/bash /root/script.sh > /dev/null

$ cat /etc/debian_version
8.10


P.S.
universite: Прим. с 2003 года Linux не нужно настраивать, это не BSD, тут всё работает. :D

Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору

19. "Проверить существование строки в кронтабе со сппецсимовлами *"  +/
Сообщение от universite (ok) on 20-Мрт-18, 17:51 

> $ cat /etc/debian_version
> 8.10
>
> P.S.
> universite: Прим. с 2003 года Linux не нужно настраивать, это не BSD,
> тут всё работает. :D


# cat /etc/debian_version
8.9

У вас там нет никаких алиасов на grep?
Покажите alias

Ответить | Правка | ^ к родителю #17 | Наверх | Cообщить модератору

24. "Проверить существование строки в кронтабе со сппецсимовлами *"  +/
Сообщение от pavlinux (ok) on 20-Мрт-18, 21:10 
> У вас там нет никаких алиасов на grep?

alias grep='grep --color=auto'

Ответить | Правка | ^ к родителю #19 | Наверх | Cообщить модератору

11. "Проверить существование строки в кронтабе со сппецсимовлами *"  +/
Сообщение от yur (??) on 19-Мрт-18, 23:55 
> А что ему писать?
> Что у него нет азов программирования и администрирования? Нет профильного образования?  
> Или что виновато правительство, что набирает идиотов на  рабочие специальности?


echo '* * * * * /bin/bash /root/script.sh > /dev/null' | grep -q '^\* \* \* \* \* /bin/bash /root/script.sh > /dev/null' ; echo $?
0

echo '* * * * * /bin/bash /root/script.sh < /dev/null' | grep -q '^\* \* \* \* \* /bin/bash /root/script.sh > /dev/null' ; echo $?
1


Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

12. "Проверить существование строки в кронтабе со сппецсимовлами *"  +/
Сообщение от universite (ok) on 20-Мрт-18, 05:58 
>
 
> echo '* * * * * /bin/bash /root/script.sh > /dev/null' | grep
> -q '^\* \* \* \* \* /bin/bash /root/script.sh > /dev/null' ;
> echo $?
> 0
> echo '* * * * * /bin/bash /root/script.sh < /dev/null' | grep
> -q '^\* \* \* \* \* /bin/bash /root/script.sh > /dev/null' ;
> echo $?
> 1
>

А вы считайте с файла, а не с pipe.


# bash test9.sh
++ grep -q '^\* \* \* \* \* /bin/bash /root/script.sh > /dev/null' /var/spool/cron/crontabs/root
+ '[' ']'
+ echo bad
bad

Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору

15. "Проверить существование строки в кронтабе со сппецсимовлами *"  +/
Сообщение от ыы on 20-Мрт-18, 10:54 
>[оверквотинг удален]
>>
> А вы считайте с файла, а не с pipe.
>
 
> # bash test9.sh
> ++ grep -q '^\* \* \* \* \* /bin/bash /root/script.sh > /dev/null'
> /var/spool/cron/crontabs/root
> + '[' ']'
> + echo bad
> bad
>

Считал все хорошо:

./test.sh
a 0
b 1


$cat test.sh

#!/bin/bash
if grep -q '\* \* \* \* \* /bin/bash /root/script.sh > /dev/null' ./root;  then
    echo "a $?"
else
    echo "b $?"
fi

#!/bin/bash
if grep -q '\* \* \* \* \* /bin/bash /root/script.sh < /dev/null' ./root;  then
    echo "a $?"
else
    echo "b $?"
fi

$cat root
* * * * * /bin/bash /root/script.sh > /dev/null

Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

16. "Проверить существование строки в кронтабе со сппецсимовлами *"  +/
Сообщение от ыы on 20-Мрт-18, 11:16 
>[оверквотинг удален]
> fi
> #!/bin/bash
> if grep -q '\* \* \* \* \* /bin/bash /root/script.sh < /dev/null'
> ./root;  then
>     echo "a $?"
> else
>     echo "b $?"
> fi
> $cat root
> * * * * * /bin/bash /root/script.sh > /dev/null

на убунту (тот же дебиан), на центосе - выполняется корректно

Ответить | Правка | ^ к родителю #15 | Наверх | Cообщить модератору

22. "Проверить существование строки в кронтабе со сппецсимовлами *"  –1 +/
Сообщение от universite (ok) on 20-Мрт-18, 18:01 


> $cat test.sh
> #!/bin/bash
> if grep -q '\* \* \* \* \* /bin/bash /root/script.sh > /dev/null'
> ./root;  then
>     echo "a $?"
> else
>     echo "b $?"
> fi

Нашел отличие.

так не работает:


#!/bin/bash
if [ $(grep -q '\* \* \* \* \* /bin/bash /root/script.sh > /dev/null' ./root) ];  then
    echo "a $?"
else
    echo "b $?"
fi

А так работает:


#!/bin/bash
if $(grep -q '\* \* \* \* \* /bin/bash /root/script.sh > /dev/null' ./root);  then
    echo "a $?"
else
    echo "b $?"
fi

или

#!/bin/bash
if grep -q '\* \* \* \* \* /bin/bash /root/script.sh > /dev/null' ./root;  then
    echo "a $?"
else
    echo "b $?"
fi

Так почему тест в квадратных скобках не проходит?

Ответить | Правка | ^ к родителю #15 | Наверх | Cообщить модератору

23. "Проверить существование строки в кронтабе со сппецсимовлами *"  +/
Сообщение от ыы on 20-Мрт-18, 21:04 

>[оверквотинг удален]
>
 
> #!/bin/bash
> if grep -q '\* \* \* \* \* /bin/bash /root/script.sh > /dev/null'
> ./root;  then
>     echo "a $?"
> else
>     echo "b $?"
> fi
>

> Так почему тест в квадратных скобках не проходит?

http://qaru.site/questions/83027/when-are-square-brackets-re...

Ответить | Правка | ^ к родителю #22 | Наверх | Cообщить модератору

26. "Проверить существование строки в кронтабе со сппецсимовлами *"  +/
Сообщение от universite (ok) on 20-Мрт-18, 23:19 
>[оверквотинг удален]
>> #!/bin/bash
>> if grep -q '\* \* \* \* \* /bin/bash /root/script.sh > /dev/null'
>> ./root;  then
>>     echo "a $?"
>> else
>>     echo "b $?"
>> fi
>>
>> Так почему тест в квадратных скобках не проходит?
> http://qaru.site/questions/83027/when-are-square-brackets-re...

Ок. Понял.

Ответить | Правка | ^ к родителю #23 | Наверх | Cообщить модератору

25. "Проверить существование строки в кронтабе со сппецсимовлами *"  +/
Сообщение от pavlinux (ok) on 20-Мрт-18, 21:25 
> Так почему тест в квадратных скобках не проходит?

Что ты хотел словить после grep -q ?
При совпадении пустая строка (\x00) возвращается.


if [ -z "$(grep -q "^[*] [*] [*] [*] [*] /bin/bash /root/script.sh [>] /dev/null" /tmp/test)" ];
        then
                echo OK;
fi

if [ ! -n "$(grep -q "^[*] [*] [*] [*] [*] /bin/bash /root/script.sh [>] /dev/null" /tmp/test)" ];
        then
                echo OK;
fi

Делай раздельно и не захламляй код.

grep -q "^[*] [*] [*] [*] [*] /bin/bash /root/script.sh [>] /dev/null" /tmp/test;
if [ $? -ne 0 ];
        then
            echo OK;
fi

Ответить | Правка | ^ к родителю #22 | Наверх | Cообщить модератору

27. "Проверить существование строки в кронтабе со сппецсимовлами *"  +/
Сообщение от universite (ok) on 20-Мрт-18, 23:25 

>[оверквотинг удален]
>            
>     echo OK;
> fi
> Делай раздельно и не захламляй код.
 
> grep -q "^[*] [*] [*] [*] [*] /bin/bash /root/script.sh [>] /dev/null" /tmp/test;
> if [ $? -ne 0 ];
>         then
>            
> echo OK;
> fi

Будет всегда "Ок" показывать.
Добавь в регулярку пару лишних символов и увидишь.

Ответить | Правка | ^ к родителю #25 | Наверх | Cообщить модератору

28. "Проверить существование строки в кронтабе со сппецсимовлами *"  +/
Сообщение от pavlinux (ok) on 21-Мрт-18, 01:58 
> Будет всегда "Ок" показывать.
> Добавь в регулярку пару лишних символов и увидишь.

А, ну да, моя косяк.


if  [ $? -eq 0 ]; ...

Ответить | Правка | ^ к родителю #27 | Наверх | Cообщить модератору

29. "Проверить существование строки в кронтабе со сппецсимовлами *"  –1 +/
Сообщение от universite (ok) on 23-Мрт-18, 14:55 
>> Будет всегда "Ок" показывать.
>> Добавь в регулярку пару лишних символов и увидишь.
> А, ну да, моя косяк.
>
 
> if  [ $? -eq 0 ]; ...
>

Еще одна "мелочь":

Нужно отрицательное значение.
если _не_ найдена регулярка, то выполнить что-то там.

Ответить | Правка | ^ к родителю #28 | Наверх | Cообщить модератору

30. "Проверить существование строки в кронтабе со сппецсимовлами *"  +/
Сообщение от ыы on 24-Мрт-18, 12:29 
>>> Будет всегда "Ок" показывать.
>>> Добавь в регулярку пару лишних символов и увидишь.
>> А, ну да, моя косяк.
>>
 
>> if  [ $? -eq 0 ]; ...
>>

> Еще одна "мелочь":
> Нужно отрицательное значение.
> если _не_ найдена регулярка, то выполнить что-то там.

это уже есть выше и вами было отвергнуто как ошибочное:

if [ $? -ne 0 ];

Ответить | Правка | ^ к родителю #29 | Наверх | Cообщить модератору

32. "Проверить существование строки в кронтабе со сппецсимовлами *"  +/
Сообщение от universite (ok) on 25-Мрт-18, 11:14 
>[оверквотинг удален]
>>>> Добавь в регулярку пару лишних символов и увидишь.
>>> А, ну да, моя косяк.
>>>
 
>>> if  [ $? -eq 0 ]; ...
>>>

>> Еще одна "мелочь":
>> Нужно отрицательное значение.
>> если _не_ найдена регулярка, то выполнить что-то там.
> это уже есть выше и вами было отвергнуто как ошибочное:
> if [ $? -ne 0 ];

Да, мой косяк, где-то тесты не то тестировали :)

Ответить | Правка | ^ к родителю #30 | Наверх | Cообщить модератору

31. "Проверить существование строки в кронтабе со сппецсимовлами *"  +/
Сообщение от pavlinux (ok) on 24-Мрт-18, 18:23 
> если не, то что-то там.

/dev/extrasensor Not Found

http://tldp.org/LDP/abs/html/refcards.html#AEN22473
http://tldp.org/LDP/abs/html/testconstructs.html

Ответить | Правка | ^ к родителю #29 | Наверх | Cообщить модератору

33. "Проверить существование строки в кронтабе со сппецсимовлами *"  +/
Сообщение от Perlovka (ok) on 04-Апр-18, 00:09 
А почему бы просто не проверять на незакомментированную строку с искомым скриптом?

if grep -qs '^[ ]*[^ #].*/root/script.sh' /var/spool/cron/crontabs/root; then
    echo OK
else
    echo BAD
fi

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема


  Закладки на сайте
  Проследить за страницей
Created 1996-2018 by Maxim Chirkov  
ДобавитьПоддержатьВебмастеруГИД  
Hosting by Ihor