LINUX.ORG.RU
ФорумAdmin

Не работает conntrack -L|awk ... через cron

 , ,


2

1

Здравствуйте! не получается запустить следующую команду через crontab:


TIME=`date +\%T`
COUNT= `conntrack -L |awk '{if ($5 ~ /src/) print $5; else if ($4 ~ /src/) print $4}' | sed "s/src=/ /g" | sort | uniq -c | sort -n | tail -n3`
echo "[$TIME] $COUNT" >> /home/conntrack_ips/`date +\%d.\%m.%\Y`

Время в файл пишется а вот conntrack из второй строки походу не срабатывает... Сама команда работает, а вот через скрипт не работает



Последнее исправление: dimpase (всего исправлений: 1)

А команда отрабатывает, если запустить из терминала? И зачем экранировать внутри команды? Используй $()

Niroday
()
Ответ на: комментарий от Niroday
так?
COUT= $(conntrack -L |awk '{if ($5 ~ /src/) print $5; else if ($4 ~ /src/) print $4}' | sed "s/src=/ /g" | sort | uniq -c | sort -n | tail -n3)

Если так то не канает...(

dimpase
() автор топика
Ответ на: комментарий от dimpase

Пробел лишний «= $(». В общем, эта команда должна выполняться с повышенными привилегиями. Значит или кронтаб рутовый, или разрешить команду выполнять без повышения привилегий.

Niroday
()
Ответ на: комментарий от dimpase

Я бы на путь до conntrack явно указал.

Зачем этот безумный конвейер? В awk отлично работают ассоциативные массивы.

conntrack -L 2>/dev/zero |awk '{if ($5 ~ /src/) C[substr($5,5)]++; else if ($4 ~ /src/) C[substr($4,5)]++;} END{for(i in C) printf "%5d %s\n",C[i],i;}' | sort -n |tail -3
vel ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.