Boa pergunta, bons exemplos, bons dados, bom esforço, obrigado.
Como o tempo está sempre mudando, você deve usar valores de tempo que podem ser comparados mais facilmente. Use o comando date
para alterar todos os valores de tempo para o número de segundos desde a "época" (1970-01-01 00:00:00 UTC).
timestart=$(date +%s -d "$TIMESTART")
timeend=$(date +%s -d "$TIMEEND")
Use o mesmo formato em Zeit
, agora você pode comparar as datas como números inteiros, o mais recente é maior:
Zeit=$(date +"%s")
if [ $timestart -le $Zeit ];then
if [ $timeend -le $Zeit ] && [ "$(pidof tcpdump)" == "" ];then
Também vejo que parece que você está tentando matar o plano de fundo tcpdump
. Você pode considerar o uso da variável $!
incorporada, que contém o PID da tarefa em segundo plano iniciada mais recentemente, por exemplo (todo o código desta resposta não foi testado):
unset tcpdump_pid
while [ $pluggedin ];do
Zeit=$(date +"%s")
if [ $timestart -le $Zeit ] && [ "$tcpdump_pid" == "" ]; then
echo "tcpdump started"
sudo tcpdump -i eth0 -w /media/usbhd-sd[b-c]1/abfrage2.pcap &
tcpdump_pid=$$
fi
if [ $timeend -le $Zeit ] && [ "$tcpdump_pid" != "" ];then
sudo kill $tcpdump_pid
fi
# sleep ?
done
De acordo com a página tcpdump
man, o SIGINT ou SIGTERM terminará tcpdump
, portanto, o -9
é desnecessário e não deve ser usado. O padrão kill
de SIGTERM será suficiente.