- Проверить существование строки в кронтабе со сппецсимовлами *, михалыч, 08:53 , 18-Мрт-18 (1)
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 там или пробел и сколько их
- Проверить существование строки в кронтабе со сппецсимовлами *, Аноним, 23:05 , 18-Мрт-18 (3)
Убери "-P" и должно работать.
- Проверить существование строки в кронтабе со сппецсимовлами *, universite, 23:10 , 18-Мрт-18 (4)
> Убери "-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
- Проверить существование строки в кронтабе со сппецсимовлами *, Аноним, 23:35 , 18-Мрт-18 (5)
#!/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?
- Проверить существование строки в кронтабе со сппецсимовлами *, universite, 05:58 , 19-Мрт-18 (7)
> > #!/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
Ошибки все равно одинаковые.
- Проверить существование строки в кронтабе со сппецсимовлами *, Pahanivo, 09:58 , 19-Мрт-18 (8)
> 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 то однако работает ...
- Проверить существование строки в кронтабе со сппецсимовлами *, Аноним, 10:59 , 19-Мрт-18 (9)
>> 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 "$@"
- Проверить существование строки в кронтабе со сппецсимовлами *, pavlinux, 19:53 , 19-Мрт-18 (10)
> > "grep: заданы конфликтующие образцы" > > if [ $(egrep -P "^\* \* \* \* \* /bin/bash /root/script.sh > /dev/null" /var/spool/cron/crontabs/root) ]; grep "^[*] [*] [*] [*] [*] /bin/bash /root/script.sh [>] /dev/null"
- Проверить существование строки в кронтабе со сппецсимовлами *, universite, 06:02 , 20-Мрт-18 (13)
>> >> "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
- Проверить существование строки в кронтабе со сппецсимовлами *, Andrey Mitrofanov, 09:17 , 20-Мрт-18 (14)
>> grep "^[*] [*] [*] [*] [*] /bin/bash /root/script.sh [>] /dev/null" > Тоже самой, что и выше. * считается как все файлы внутри директории. Кто у Вас шелл ? Или куда и как эту команду вставляете и кто её исполняет, разные ли это "люди"?
- Проверить существование строки в кронтабе со сппецсимовлами *, pavlinux, 14:23 , 20-Мрт-18 (18) –1
>>> grep "^[*] [*] [*] [*] [*] /bin/bash /root/script.sh [>] /dev/null" >> Тоже самой, что и выше. * считается как все файлы внутри директории. > Кто ... куда ... как ... и кто ...?Опять путает консоли, на BSD небось :)
- Проверить существование строки в кронтабе со сппецсимовлами *, universite, 17:52 , 20-Мрт-18 (21)
>>>> grep "^[*] [*] [*] [*] [*] /bin/bash /root/script.sh [>] /dev/null" >>> Тоже самой, что и выше. * считается как все файлы внутри директории. >> Кто ... куда ... как ... и кто ...? > Опять путает консоли, на BSD небось :) Если бы для BSD тестил - сразу бы написал. Не надо гнать.
- Проверить существование строки в кронтабе со сппецсимовлами *, universite, 17:52 , 20-Мрт-18 (20)
>>> grep "^[*] [*] [*] [*] [*] /bin/bash /root/script.sh [>] /dev/null" >> Тоже самой, что и выше. * считается как все файлы внутри директории. > Кто у Вас шелл ? Или куда и как эту команду вставляете > и кто её исполняет, разные ли это "люди"?Скрипт запускал через sh, bash и dash. Одинаковый результат.
- Проверить существование строки в кронтабе со сппецсимовлами *, pavlinux, 13:59 , 20-Мрт-18 (17)
> Тоже самой, что и выше. * считается как все файлы внутри директории. > # 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
- Проверить существование строки в кронтабе со сппецсимовлами *, universite, 17:51 , 20-Мрт-18 (19)
> $ cat /etc/debian_version > 8.10 > > P.S. > universite: Прим. с 2003 года Linux не нужно настраивать, это не BSD, > тут всё работает. :D # cat /etc/debian_version 8.9
У вас там нет никаких алиасов на grep? Покажите alias
- Проверить существование строки в кронтабе со сппецсимовлами *, yur, 23:55 , 19-Мрт-18 (11)
> А что ему писать? > Что у него нет азов программирования и администрирования? Нет профильного образования? > Или что виновато правительство, что набирает идиотов на рабочие специальности? echo '* * * * * /bin/bash /root/script.sh > /dev/null' | grep -q '^\* \* \* \* \* /bin/bash /root/script.sh > /dev/null' ; echo $? 0echo '* * * * * /bin/bash /root/script.sh < /dev/null' | grep -q '^\* \* \* \* \* /bin/bash /root/script.sh > /dev/null' ; echo $? 1
- Проверить существование строки в кронтабе со сппецсимовлами *, universite, 05:58 , 20-Мрт-18 (12)
> > 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
- Проверить существование строки в кронтабе со сппецсимовлами *, ыы, 10:54 , 20-Мрт-18 (15)
>[оверквотинг удален] >> > А вы считайте с файла, а не с 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
- Проверить существование строки в кронтабе со сппецсимовлами *, ыы, 11:16 , 20-Мрт-18 (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 на убунту (тот же дебиан), на центосе - выполняется корректно
- Проверить существование строки в кронтабе со сппецсимовлами *, universite, 18:01 , 20-Мрт-18 (22) –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
А так работает:
#!/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
Так почему тест в квадратных скобках не проходит?
- Проверить существование строки в кронтабе со сппецсимовлами *, ыы, 21:04 , 20-Мрт-18 (23)
- Проверить существование строки в кронтабе со сппецсимовлами *, pavlinux, 21:25 , 20-Мрт-18 (25)
> Так почему тест в квадратных скобках не проходит?Что ты хотел словить после grep -q ? При совпадении пустая строка (\x00) возвращается.
if [ -z "$(grep -q "^[*] [*] [*] [*] [*] /bin/bash /root/script.sh [>] /dev/null" /tmp/test)" ]; then echo OK; fiif [ ! -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
- Проверить существование строки в кронтабе со сппецсимовлами *, universite, 23:25 , 20-Мрт-18 (27)
>[оверквотинг удален] > > echo OK; > fi > Делай раздельно и не захламляй код. > grep -q "^[*] [*] [*] [*] [*] /bin/bash /root/script.sh [>] /dev/null" /tmp/test; > if [ $? -ne 0 ]; > then > > echo OK; > fi Будет всегда "Ок" показывать. Добавь в регулярку пару лишних символов и увидишь.
- Проверить существование строки в кронтабе со сппецсимовлами *, pavlinux, 01:58 , 21-Мрт-18 (28)
> Будет всегда "Ок" показывать. > Добавь в регулярку пару лишних символов и увидишь.А, ну да, моя косяк.
if [ $? -eq 0 ]; ...
- Проверить существование строки в кронтабе со сппецсимовлами *, universite, 14:55 , 23-Мрт-18 (29) –1
>> Будет всегда "Ок" показывать. >> Добавь в регулярку пару лишних символов и увидишь. > А, ну да, моя косяк. > > if [ $? -eq 0 ]; ... > Еще одна "мелочь": Нужно отрицательное значение. если _не_ найдена регулярка, то выполнить что-то там.
- Проверить существование строки в кронтабе со сппецсимовлами *, ыы, 12:29 , 24-Мрт-18 (30)
>>> Будет всегда "Ок" показывать. >>> Добавь в регулярку пару лишних символов и увидишь. >> А, ну да, моя косяк. >> >> if [ $? -eq 0 ]; ... >> > Еще одна "мелочь": > Нужно отрицательное значение. > если _не_ найдена регулярка, то выполнить что-то там.это уже есть выше и вами было отвергнуто как ошибочное: if [ $? -ne 0 ];
- Проверить существование строки в кронтабе со сппецсимовлами *, universite, 11:14 , 25-Мрт-18 (32)
>[оверквотинг удален] >>>> Добавь в регулярку пару лишних символов и увидишь. >>> А, ну да, моя косяк. >>> >>> if [ $? -eq 0 ]; ... >>> >> Еще одна "мелочь": >> Нужно отрицательное значение. >> если _не_ найдена регулярка, то выполнить что-то там. > это уже есть выше и вами было отвергнуто как ошибочное: > if [ $? -ne 0 ]; Да, мой косяк, где-то тесты не то тестировали :)
- Проверить существование строки в кронтабе со сппецсимовлами *, pavlinux, 18:23 , 24-Мрт-18 (31)
- Проверить существование строки в кронтабе со сппецсимовлами *, Perlovka, 00:09 , 04-Апр-18 (33)
А почему бы просто не проверять на незакомментированную строку с искомым скриптом?if grep -qs '^[ ]*[^ #].*/root/script.sh' /var/spool/cron/crontabs/root; then echo OK else echo BAD fi
|