Ga naar inhoud


Cronjob, datum of tijd meegeven in logfile.


Con

Aanbevolen berichten

Eentje heb ik er gevonden... oops;

		fi
	elif [ $ctr > 15 ]
	then

De conditie ontbrak...

 

En nu weer verder.

Groet, Con. Gloeiende, gloeiende, een beetje humor moet kunnen, anders ga je maar ergens anders heen..
Sinds maart 2021 glasvezel via KPN.

Internet/PC: modem/router Fritzbox en TP-Link accesspoint, switch (8), switch (4)

Intel Nuc i7 met W10, Gigabyte Brix met Home Assistant, 17 Shelly's en 2 ESP-tjes.

Link naar reactie
Delen op andere sites


  • Reacties 88
  • Aangemaakt
  • Laatste reactie

Beste reacties in dit topic

Beste reacties in dit topic

Wou net voorstellen de 'elif' te vervangen door een gewone 'else' omdat er geen extra check is

 

**edit**

Dom dat ik het niet eerder gezien had; en raar dat het dan eerder wel werkte.

Ik ben voornamelijk gewend om met kornshell te werken, en af en toe zijn er toch finesses die net iets anders lopen.

aangepast door De_Perre

[Vu+ Solo4K] - [VTi 13.x]

[TVV Basic+] - [CD TopHD]
Ik vind het nieuwe overzicht met ongelezen topics in een tijdslijn maar niks...

Link naar reactie
Delen op andere sites

Ik heb in ieder geval weer output, weliswaar zonder de tijd maar er is weer hoop.

 

">=" is ook een vorm van porno, moet zij "-ge". Ja en dat verzin je niet maar na

een half uurtje surfen ook weer gevonden, er liep een conditie niet lekker.

 

Nu heb ik;

while read line tempfile
do
	#Indien de teller < 16 zullen we de lijn toevoegen aan de grote logfile
	if [ $ctr < 15 ]
	then
		#verhoog ctr met 1
		ctr=+1
		#schrijf lijn naar grote log
		echo $line >> $logfile
		#Na het lezen van de laatste lijn, willen we de tijd nog wegschrijven
		if [ $ctr -ge 15 ]
		then
			##voeg blanco regel (\n) tijdstip aan log
			echo "\n Tijdstip: " $(date +%T) >> $logfile
		fi
	elif [ $ctr > 15 ]
	then
		#in geval we meer dan 15 lijnen uitgelezen hebben, willen we cu stoppen
		#eerst het achtergrond proces terug naar de voorgrond brengen
		fg
		#dan afsluiten door de input te sturen met xdotool
		xdotool key ~.
	fi
done < $tempfile
aangepast door Con

Groet, Con. Gloeiende, gloeiende, een beetje humor moet kunnen, anders ga je maar ergens anders heen..
Sinds maart 2021 glasvezel via KPN.

Internet/PC: modem/router Fritzbox en TP-Link accesspoint, switch (8), switch (4)

Intel Nuc i7 met W10, Gigabyte Brix met Home Assistant, 17 Shelly's en 2 ESP-tjes.

Link naar reactie
Delen op andere sites

Waarom zou je een groter dan of gelijk aan 15 gebruiken?

 

Voor zover ik de 'telegram' heb kunnen bekijken bestaat deze uit 15 lijnen; dus zou je na die 15de lijn de tijd willen toevoegen.

 

Door de 'elif [ $ctr > 15 ]' te gebruiken, zal hij vanaf de 16de lijn die gelezen zou worden normaal het achtergrond proces terug op de voorgrond brengen en 'cu -l ...... ' afluiten.

 

Verder is het ook zo dat je door gebruik te maken van 'if [ $ctr < 15 ]' normaal ook nooit in de test kan komen om de tijd weg te schrijven; vandaar dat ik die als '< 16' had geschreven.

 

Met dit script zou jouw output iets als volgende geven:

lijn 1 >> logfile

lijn 2 >> logfile

lijn 3 >> logfile

lijn 4 >> logfile

lijn 5 >> logfile

lijn 6 >> logfile

lijn 7 >> logfile

lijn 8 >> logfile

lijn 9 >> logfile

lijn 10 >> logfile

lijn 11 >> logfile

lijn 12 >> logfile

lijn 13 >> logfile

lijn 14 >> logfile

 

Lijn 15 niets want die is niet kleiner dan 15 maar ook niet groter

 

lijn 16 zou dan de exit geven van cu

[Vu+ Solo4K] - [VTi 13.x]

[TVV Basic+] - [CD TopHD]
Ik vind het nieuwe overzicht met ongelezen topics in een tijdslijn maar niks...

Link naar reactie
Delen op andere sites

Ik kreeg nl een foutmelding, iets van lijn 16 bestaat niet...

Dus ik denk dat er vanaf 0 geteld wordt...?

 

Maar als ik dit zo zie... misschien wordt niet alles als een lijn gezien.

0-0:96.3.10(1)
0-0:96.13.1()
0-0:96.13.0()
Connected.

Disconnected.
01 !
02 /ISk52MT382-1004
03 
04 0-0:96.1.1(5A424556303035313439383933303133)
05 1-0:1.8.1(03301.583*kWh)
06 1-0:1.8.2(02206.347*kWh)
07 1-0:2.8.1(00978.984*kWh)
08 1-0:2.8.2(02291.654*kWh)
09 0-0:96.14.0(0002)
10 1-0:1.7.0(0000.97*kW)
11 1-0:2.7.0(0000.00*kW)
12 0-0:17.0.0(0999.00*kW)
13 0-0:96.3.10(1)
14 0-0:96.13.1()
15 0-0:96.13.0()
16 Connected.
17 
18 Disconnected.
!
/ISk52MT382-1004

0-0:96.1.1(5A424556303035313439383933303133)
1-0:1.8.1(03301.583*kWh)
1-0:1.8.2(02206.354*kWh)
1-0:2.8.1(00978.984*kWh)
aangepast door Con

Groet, Con. Gloeiende, gloeiende, een beetje humor moet kunnen, anders ga je maar ergens anders heen..
Sinds maart 2021 glasvezel via KPN.

Internet/PC: modem/router Fritzbox en TP-Link accesspoint, switch (8), switch (4)

Intel Nuc i7 met W10, Gigabyte Brix met Home Assistant, 17 Shelly's en 2 ESP-tjes.

Link naar reactie
Delen op andere sites

Er wordt in de verste der verten geen tijd genoteerd.

 

En er worden heel veel log's gespuugd.

pi@raspberrypi ~ $ ./bassie4.sh
cu: End of file on terminal
pi@raspberrypi ~ $ cu: child: Got signal 9
^C   (hier geef ik een ctr-C)
pi@raspberrypi ~ $

Ik start het script op na 5 seconden, als 'Got signal 9" is verschenen

onderbreek ik het met Ctr-C

 

Dan heb ik ongeveer tussen de 12 en 19 logs.

aangepast door Con

Groet, Con. Gloeiende, gloeiende, een beetje humor moet kunnen, anders ga je maar ergens anders heen..
Sinds maart 2021 glasvezel via KPN.

Internet/PC: modem/router Fritzbox en TP-Link accesspoint, switch (8), switch (4)

Intel Nuc i7 met W10, Gigabyte Brix met Home Assistant, 17 Shelly's en 2 ESP-tjes.

Link naar reactie
Delen op andere sites

Eerst maar even een update en back to basis met het getal 16;

 

Dan krijg ik deze meldingen (en dat gaat onverminderd door.

pi@raspberrypi ~ $ ./bassie4.sh
./bassie4.sh: 26: ./bassie4.sh: cannot open 16: No such file
./bassie4.sh: 42: fg: job (null) not created under job control
cu: End of file on terminal
Error: Can't open display: (null)
Failed creating new xdo instance
./bassie4.sh: 26: ./bassie4.sh: cannot open 16: No such file
./bassie4.sh: 42: fg: job (null) not created under job control
Error: Can't open display: (null)

En dat gebeurd allemaal met dit stukje script.;

while read line
do
	#Indien de teller < 16 zullen we de lijn toevoegen aan de grote logfile
	if [ $ctr < 16 ]
	then
		#verhoog ctr met 1
		ctr=+1
		#schrijf lijn naar grote log
		echo $line >> $logfile
		#Na het lezen van de laatste lijn, willen we de tijd nog wegschrijven
		if [ $ctr = 15 ]
		then
			##voeg blanco regel (\n) tijdstip aan log
			echo "\n Tijdstip: " $(date +%T) >> $logfile
		fi
	elif [ $ctr > 15 ]
	then
		#in geval we meer dan 15 lijnen uitgelezen hebben, willen we cu stoppen
		#eerst het achtergrond proces terug naar de voorgrond brengen
		fg
		#dan afsluiten door de input te sturen met xdotool
		xdotool key ~.
	fi
done < $tempfile


#sluit script af
exit 0
aangepast door Con

Groet, Con. Gloeiende, gloeiende, een beetje humor moet kunnen, anders ga je maar ergens anders heen..
Sinds maart 2021 glasvezel via KPN.

Internet/PC: modem/router Fritzbox en TP-Link accesspoint, switch (8), switch (4)

Intel Nuc i7 met W10, Gigabyte Brix met Home Assistant, 17 Shelly's en 2 ESP-tjes.

Link naar reactie
Delen op andere sites

Ik ben er inmiddels ook achter dat de counter ctr+=1 niet werkte.

 

Wel met ctr=$((ctr+1))

Groet, Con. Gloeiende, gloeiende, een beetje humor moet kunnen, anders ga je maar ergens anders heen..
Sinds maart 2021 glasvezel via KPN.

Internet/PC: modem/router Fritzbox en TP-Link accesspoint, switch (8), switch (4)

Intel Nuc i7 met W10, Gigabyte Brix met Home Assistant, 17 Shelly's en 2 ESP-tjes.

Link naar reactie
Delen op andere sites

De laatste update en dan ga ik weer pitten, het gaat zeer voortvarend.

(ik heb nog alle voorwaarden gewijzigd en de teller op 18 gezet)

Ik heb er ook nog een "one-liner" tussen gezet voor de overzichtelijkheid.

 

Wat ik nu nog wil is dat het script 24/7 blijf lopen dus met iets als nohup...

 

En ik wil de blauwe tekst kwijt in de terminal.

pi@raspberrypi ~ $ ./bassie4.sh
cu: End of file on terminal
pi@raspberrypi ~ $ cu: child: Got signal 9
^C
pi@raspberrypi ~ $
 

 

Voor de liefhebber "lt" less then "gt" greater then, "eq" equal.

 

Script;

while read line
do
	#Indien de teller < 16 zullen we de lijn toevoegen aan de grote logfile
	if [ $ctr -lt 18 ]
	then
		#verhoog ctr met 1
		ctr=$((ctr+1))
		#schrijf lijn naar grote log
		echo $line >> $logfile
		#Na het lezen van de laatste lijn, willen we de tijd nog wegschrijven
		if [ $ctr -eq 18 ] ; then echo "\n Tijdstip: " $(date +%T) >> $logfile ; fi
		#voeg blanco regel (\n) tijdstip aan log
	elif [ $ctr -gt 18 ]
	then
		#in geval we meer dan 15 lijnen uitgelezen hebben, willen we cu stoppen
		#eerst het achtergrond proces terug naar de voorgrond brengen
		fg
		#dan afsluiten door de input te sturen met xdotool
		xdotool key ~.
	fi
done < $tempfile

Resultaat;

!
/ISk52MT382-1004

0-0:96.1.1(5A424556303035313439383933303133)
1-0:1.8.1(03301.583*kWh)
1-0:1.8.2(02205.757*kWh)
1-0:2.8.1(00978.984*kWh)
1-0:2.8.2(02291.654*kWh)
0-0:96.14.0(0002)
1-0:1.7.0(0001.36*kW)
1-0:2.7.0(0000.00*kW)
0-0:17.0.0(0999.00*kW)
0-0:96.3.10(1)
0-0:96.13.1()
0-0:96.13.0()
Connected.

Disconnected.

 Tijdstip:  23:56:27
aangepast door Con

Groet, Con. Gloeiende, gloeiende, een beetje humor moet kunnen, anders ga je maar ergens anders heen..
Sinds maart 2021 glasvezel via KPN.

Internet/PC: modem/router Fritzbox en TP-Link accesspoint, switch (8), switch (4)

Intel Nuc i7 met W10, Gigabyte Brix met Home Assistant, 17 Shelly's en 2 ESP-tjes.

Link naar reactie
Delen op andere sites

Con, blij te zien dat je er verder uit raakt.

 

Ik dacht dat je dit met cron steeds even ging starten (als alles correct werkt natuurlijk). Om het met nohup continue te laten lopen, zal niet gaan denk ik. Het script wordt normaal immers gestart; er worden bepaalde handelingen gedaan en logs geschreven; en dan wordt normaal het script afgesloten. Met nohup zou het willen zeggen dat het gewoon verder blijft lopen, maar dan zou je de logging moeten herbekijken.

 

 

Het blijft me echter onduidelijk wat de meldingen van cu willen betekenen; en google brengt me helaas niet veel verder.

 

Straks verder over nadenken, misschien komt er nog een moment van verlichting...

[Vu+ Solo4K] - [VTi 13.x]

[TVV Basic+] - [CD TopHD]
Ik vind het nieuwe overzicht met ongelezen topics in een tijdslijn maar niks...

Link naar reactie
Delen op andere sites

Voorlopig heb je me aangezet tot een nieuwe wereld die

ik voorheen niet eens wist te bestaan (zoook wiz).

 

En met jouw script ben ik constant aan de slag gegaan

enerzijds omdat ik het wel een leuke uitdaging vind

maar uiteraard anderzijds omdat ik mijn doel tot

uitlezen anders wil bereiken dan standaard.

 

Nu blijkt ook weer dat hier weer heel andere syntaxen

worden gebruikt dan bijvoorbeeld > < = enzovoort. Dat

was de reden dat de tellers gewoo niet liepen.

Daar kwam ik achter toen ik de teller in de terminal

in beeld bracht. De teller ging gewoon door tot tegen

de 1000... en dan ga je gewoon verder zoeken en vinden!

 

Want, ik snap er dan misschien geen ruk van, ik ben wel

een bijtertje :)

aangepast door Con

Groet, Con. Gloeiende, gloeiende, een beetje humor moet kunnen, anders ga je maar ergens anders heen..
Sinds maart 2021 glasvezel via KPN.

Internet/PC: modem/router Fritzbox en TP-Link accesspoint, switch (8), switch (4)

Intel Nuc i7 met W10, Gigabyte Brix met Home Assistant, 17 Shelly's en 2 ESP-tjes.

Link naar reactie
Delen op andere sites

Voor wat de cu-probleempjes nog betreft, zou je eventueel via een cli even kunnen proberen om:

 

1. proces op te starten in achtergrond met behulp van                                  

            (cu -l /dev/P1/meter -s 9600 --parity=none >> myTest.txt)&

2. dan terug naar voorgrond halen met                                                          

            fg

3. dan de toetsencombinatie sturen zoals je die met xdotools doorstuurt     

           ~.

 

en kijken wat er precies aan de hand is.

 

Als deze wel correct afgesloten wordt, zit er toch nog ergens iets in het script wat niet correct is en moeten we daar even verder in zoeken.

Mocht je ook hier nog de ctrl+C indrukken, dan kunnen we dit eventueel ook nog met xdotool opvangen.

[Vu+ Solo4K] - [VTi 13.x]

[TVV Basic+] - [CD TopHD]
Ik vind het nieuwe overzicht met ongelezen topics in een tijdslijn maar niks...

Link naar reactie
Delen op andere sites

pi@raspberrypi ~ $ (cu -/dev/P1/meter -9600 --parity=none >> myTest.txt)&

[1] 984

pi@raspberrypi ~ $

 

 

pi@raspberrypi ~ $ fg

(cu -/dev/P1/meter -9600 --parity=none >> myTest.txt)

cu: Got hangup signal

pi@raspberrypi ~ $

 

Dus bij het ingeven kreeg ik na een paar seconden de prompt terug.

na fg te geven kreeg ik de volgende 2 regels en daarna ook weer de prompt.

Groet, Con. Gloeiende, gloeiende, een beetje humor moet kunnen, anders ga je maar ergens anders heen..
Sinds maart 2021 glasvezel via KPN.

Internet/PC: modem/router Fritzbox en TP-Link accesspoint, switch (8), switch (4)

Intel Nuc i7 met W10, Gigabyte Brix met Home Assistant, 17 Shelly's en 2 ESP-tjes.

Link naar reactie
Delen op andere sites

Ik heb even als test het volgende gedaan;

#fi
echo "test1"
#start uitlezen en stuur naar de achtergrond; log naar tijdelijk bestand
(cu -l /dev/P1meter -s 9600 --parity=none >> $tempfile)&
echo "test2"
#variable aanmaken om process ID in te stoppen

en kreeg als resultaat;

pi@raspberrypi ~ $ ./bassie4.sh

test1

test2

cu: End of file on terminal

cu: child: Got signal 9

pi@raspberrypi ~ $

 

 

Groet, Con. Gloeiende, gloeiende, een beetje humor moet kunnen, anders ga je maar ergens anders heen..
Sinds maart 2021 glasvezel via KPN.

Internet/PC: modem/router Fritzbox en TP-Link accesspoint, switch (8), switch (4)

Intel Nuc i7 met W10, Gigabyte Brix met Home Assistant, 17 Shelly's en 2 ESP-tjes.

Link naar reactie
Delen op andere sites

Ondanks mijn trage reactie vandaag (moest werken) heb ik niet stil gezeten,

eerst het aangepaste script en daarna het veelbelovende resultaat via Cron;

while read line
do
	#Indien de teller < 16 zullen we de lijn toevoegen aan de grote logfile
	if [ $ctr -lt 18 ]
	then
		#verhoog ctr met 1
		ctr=$((ctr+1))
		#schrijf lijn naar grote log
#		echo $line >> $logfile
		if echo "$line" | grep -q "1.8.1" ; then echo `expr substr $line 11 9` >> $logfile; fi
		if echo "$line" | grep -q "1.8.2" ; then echo `expr substr $line 11 9` >> $logfile; fi
		if echo "$line" | grep -q "2.8.1" ; then echo `expr substr $line 11 9` >> $logfile; fi
		if echo "$line" | grep -q "2.8.2" ; then echo `expr substr $line 11 9` >> $logfile; fi
		if echo "$line" | grep -q "1.7.0" ; then echo `expr substr $line 11 7` >> $logfile; fi
		if echo "$line" | grep -q "2.7.0" ; then echo `expr substr $line 11 7` >> $logfile; fi
		#Na het lezen van de laatste lijn, willen we de tijd nog wegschrijven
		if [ $ctr -eq 18 ] ; then echo "Tijdstip: " $(date +%T) "\n" >> $logfile ; fi
		#voeg blanco regel (\n) tijdstip aan log
	elif [ $ctr -gt 18 ]
	then
		#in geval we meer dan 15 lijnen uitgelezen hebben, willen we cu stoppen
		#eerst het achtergrond proces terug naar de voorgrond brengen
		fg
		#dan afsluiten door de input te sturen met xdotool
		xdotool key ~.
	fi
done < $tempfile
03301.583
02205.757
00978.984
02291.654
0001.36
0000.00
Tijdstip:  21:49:34 

03301.583
02205.757
00978.984
02291.654
0001.36
0000.00
Tijdstip:  21:50:34 

03301.583
02205.757
00978.984
02291.654
0001.36
0000.00
Tijdstip:  21:51:34 

03301.583
02205.757
00978.984
02291.654
0001.36
0000.00
Tijdstip:  21:52:33 

03301.583
02205.757
00978.984
02291.654
0001.36
0000.00
Tijdstip:  21:53:33 

Dus nu schrijf ik alleen weg wat ik nodig heb, het wordt prachtig en steeds beter.

Meest boeiende is dat ik met dit script geen extra overruns krijg dus dubbel pret.

 

Met mijn vorige (nog steeds draaiende script heb ik een overdosis, zie hier;

Jun 11 20:52:12 raspberrypi kernel: [241297.567958] ttyUSB0: 6 input overrun(s)
Jun 11 20:57:12 raspberrypi kernel: [241597.571341] ttyUSB0: 6 input overrun(s)
Jun 11 21:03:11 raspberrypi kernel: [241957.563625] ttyUSB0: 6 input overrun(s)
Jun 11 21:08:12 raspberrypi kernel: [242257.579796] ttyUSB0: 6 input overrun(s)
Jun 11 21:18:11 raspberrypi kernel: [242857.569897] ttyUSB0: 6 input overrun(s)
Jun 11 21:23:11 raspberrypi kernel: [243157.569438] ttyUSB0: 6 input overrun(s)
Jun 11 21:28:11 raspberrypi kernel: [243457.540678] ttyUSB0: 6 input overrun(s)
Jun 11 21:31:11 raspberrypi kernel: [243637.562535] ttyUSB0: 6 input overrun(s)
Jun 11 21:36:11 raspberrypi kernel: [243937.563538] ttyUSB0: 6 input overrun(s)
Jun 11 21:41:11 raspberrypi kernel: [244237.567252] ttyUSB0: 6 input overrun(s)
Jun 11 21:46:11 raspberrypi kernel: [244537.473432] ttyUSB0: 6 input overrun(s)
Jun 11 21:47:12 raspberrypi kernel: [244597.659965] ttyUSB0: 6 input overrun(s)
Jun 11 21:52:12 raspberrypi kernel: [244897.595665] ttyUSB0: 6 input overrun(s)
Jun 11 21:57:12 raspberrypi kernel: [245197.591470] ttyUSB0: 6 input overrun(s)

Groet, Con. Gloeiende, gloeiende, een beetje humor moet kunnen, anders ga je maar ergens anders heen..
Sinds maart 2021 glasvezel via KPN.

Internet/PC: modem/router Fritzbox en TP-Link accesspoint, switch (8), switch (4)

Intel Nuc i7 met W10, Gigabyte Brix met Home Assistant, 17 Shelly's en 2 ESP-tjes.

Link naar reactie
Delen op andere sites

Maak een account aan of log in om te reageren

Je moet een lid zijn om een reactie te kunnen achterlaten

Account aanmaken

Registreer voor een nieuwe account in onze community. Het is erg gemakkelijk!

Registreer een nieuwe account

Inloggen

Heb je reeds een account? Log hier in.

Nu inloggen
×
×
  • Nieuwe aanmaken...