1

Temat: rc.local problem z działaniem skryptu

Cześć,

LEDE 17.01.4

Napisałem skrypt, który chciałbym aby uruchomił się podczas startu routera,
skrypt znajduję się /root/skrypt.sh
-rwxr-xr-x    1 root     root          2624

w rc.local
sleep 90
#/root/skrypt.sh #to nie zadziała logi informuję, że nie znalezione
sh /etc/skrypt.sh

w skrypcie jest
logger "urchamiam tcpdump"
/usr/sbin/tcpdump -q -c 44 -i eth0.2 |grep "IP 10.*."|awk '{print $3}'>/root/vlan.tmp

tcpdump uruchamia się na około 2 sekundy (widzę w htop) i logread 
po czym nie zapisuje wyniku w /root/vlan.tmp

sad

skrypt uruchomiony z palca działa poprawnie
skrypt uruchomiony z crona działa poprawnie

Czy rc.local ma jakieś ograniczenia?
Czy uruchamia polecenia innym użytkownikiem niż root?
Gdzie może być problem?

skrypt umieszczałem w /etc/
rc.local zapisuje do /root/

A może zna ktoś sposób aby cron wykonał skrypt jednorazowo po starcie routera
@reboot sh /root/skrypt.sh - nie zadziałało

NETGEAR WNDR4300

2

Odp: rc.local problem z działaniem skryptu

tak sobie myślę
skoro cron uruchamia skrypt poprawnie,
to jak nie znajdziemy innego rozwiązania lub błęd
to do rc.local dodam skrypty, który doda wpis do crona, cron zadziała, usunie wpis

jednak liczę, że uda nam się znaleźć błąd lub mniej "toporne" rozwiązanie

NETGEAR WNDR4300

3

Odp: rc.local problem z działaniem skryptu

Zacznij od pokazania całego skryptu, potem zadawaj pytania.

4 (edytowany przez Cezary 2018-09-10 08:18:26)

Odp: rc.local problem z działaniem skryptu

1. Czy skrypt uruchamiasz w tle? (powinieneś)
2. to sleep 90 jest mało elegancie, zwłaszcza w skryptach startowych. Strzelam że to miało zapewnić uruchomienie wszystkich procesów i sieci, więc lepiej wywołać ten skrypt na hotplugu interfejsu wan niż w ten sposób.
3. Czemu robisz dodatkowo grep zamiast po prostu dać odpowiedni filtr do tcpdumpa?

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

5

Odp: rc.local problem z działaniem skryptu

Dzięki Cezary
ad 1)
tak, oryginalnie było tak
(sleep 90; sh /root/skrypt.sh) &
jednak nie działa poprawnie

ad 2)
dokładnie, to czas na wystartowanie wszystkich interfejsów i podłączenie manualne
dziękuję za podpowiedź

ad 3)
mam różne sytuacje: sam serwer, różne konfiguracje switchy, ja potrzebuje wyłapać drugi i trzeci oktet jednej z podsieci, w ten sposób za każdym razem działa poprawnie
poza tym to pakiet mini tcpdump - nie jestem pewny czy zawiera wszystko
no i z definiowaniem filtrów - nie pewnie się czuje, brak doświadczenia

NETGEAR WNDR4300

6

Odp: rc.local problem z działaniem skryptu

pepe2k napisał/a:

Zacznij od pokazania całego skryptu, potem zadawaj pytania.

skrypt jest dość obszerny
wc auto.IP.vlany.v1.sh
150       404      2624 auto.IP.vlany.v1.sh

analizowanie całego skryptu, jest stratą naszego czasu
mam konkretny problem z zadziałaniem konkretnego fragmentu

tym bardziej, że uruchomiony z palca i z crona działa poprawnie

NETGEAR WNDR4300

7

Odp: rc.local problem z działaniem skryptu

w rc.local uruchamiam skrypt cron.auto.sh
i teraz tcpdump uruchomiany ze skryptu działa OK
na ten moment spełnia zadanie i póki co zostawiam tak

dziękuje za zainteresowanie i pomoc
pozdrawiam smile smile


#!/bin/bash
logger "uruchomiam cron.auto.sh"
pc=/etc/crontabs/root
#cp -f $pc /root/ #jesli skrypt zostanie przerwany, wpis zostanie na stale, dlatego #
echo "*/1 * * * * sh /root/nazwa_skryptu.sh">>$pc
/etc/init.d/cron restart
sleep 77
cp -f /root/root $pc
/etc/init.d/cron restart
logger "koniec dzialania cron.auto.sh"
NETGEAR WNDR4300