Voor een projectje wil ik het volgende:
Ik heb een variabele die ik elke 5 minuten wil posten naar een site met curl.
als het om wat voor reden mislukt, dan moeten de variablen opgeslagen worden, en op een later tijdstip nogmaals gepost worden zodra de site weer benaderbaar lijkt te zijn. Wat ik daarvoor nu heb bedacht gaat werken maar ik vraag me af of het netter kan?
Komt neer op het volgende (nog niet getest, wellicht nog kleine typo's)
Kortom: probeer te posten; als het gelukt is, controleer dán of er een backlog bestaat met eerdere failures. Probeer die te posten, en bewaar eventueel weer mislukte pogingen in een file. Log het geheel in een logfile.
Backlog wordt alleen geprobeerd te posten als de eerste poging lukt, en er wordt alleen bij de eerste failure gelogd, dus bij langere tijd onbereikbaar ontstaat geen vollopende log.
Nu is mijn vraag; dit bovenstaande stukje gaat wel werken, maar ik heb het gevoel dat het netter kan. Hoe precies, weet ik echter niet goed.
Iemand die nog wat slimmigheid kan toevoegen? Ik zat al te puzzelen met een while loop om die curl heen, maar dan gaat ie iedere 5 minuten de hele backlog proberen te posten, en na een aantal dagen onbeschikbaarheid gaat dat erg lang duren. (backlog mag best een aantal dagen logregels bevatten na een poos en dat kunnen dus een paar 100 regels worden.)
Ik heb een variabele die ik elke 5 minuten wil posten naar een site met curl.
als het om wat voor reden mislukt, dan moeten de variablen opgeslagen worden, en op een later tijdstip nogmaals gepost worden zodra de site weer benaderbaar lijkt te zijn. Wat ik daarvoor nu heb bedacht gaat werken maar ik vraag me af of het netter kan?
Komt neer op het volgende (nog niet getest, wellicht nog kleine typo's)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| curl -d $variable --url http://www.site.com >> $success if [ $success = "OK" ]; then if [ -f backlog.lst ]; then while read var; do curl -d $var --url http://www.site.com >> $success if [ $success != "OK" ]; then echo $var >> backlog2.lst fi done < backlog.lst if [ -f backlog2.lst ];then echo "backlog niet goed gepost, er zijn van `wc -l backlog.lst | awk '{print $1;}'` variabelen, `wc -l backlog2.lst| awk '{print $1;}'` posts mislukt" >> logfile mv backlog2.lst backlog.lst else rm backlog.lst echo "backlog succesvol gepost" >> logfile fi fi else if [ ! -f backlog.lst ]; then echo "Error bij posten variabele" >> logfile fi echo $variable >> backlog.lst fi |
Kortom: probeer te posten; als het gelukt is, controleer dán of er een backlog bestaat met eerdere failures. Probeer die te posten, en bewaar eventueel weer mislukte pogingen in een file. Log het geheel in een logfile.
Backlog wordt alleen geprobeerd te posten als de eerste poging lukt, en er wordt alleen bij de eerste failure gelogd, dus bij langere tijd onbereikbaar ontstaat geen vollopende log.
Nu is mijn vraag; dit bovenstaande stukje gaat wel werken, maar ik heb het gevoel dat het netter kan. Hoe precies, weet ik echter niet goed.
Iemand die nog wat slimmigheid kan toevoegen? Ik zat al te puzzelen met een while loop om die curl heen, maar dan gaat ie iedere 5 minuten de hele backlog proberen te posten, en na een aantal dagen onbeschikbaarheid gaat dat erg lang duren. (backlog mag best een aantal dagen logregels bevatten na een poos en dat kunnen dus een paar 100 regels worden.)
My solar panels | Soladin loggen? | Strava
---------------
Gemak dient de mens, moeite dient de mensheid.