Synology DS213 scripting

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • whodares
  • Registratie: Februari 2009
  • Laatst online: 26-11-2023
Ik probeer een simpele scheduled task te maken die een api aanspreekt en de values daarvan naar de lokale phpMyAdmin MariaDB10 wegschrijft. Ik ben echter geen krak als het aankomt op de shell-scripting die hier gebruikt wordt en kan maar amper informatie terugvinden.

De api die ik aanspreek, geeft json terug en dat is al meteen het eerste probleem. Iedereen is maar jq aan het aanraden, maar ik weet niet eens hoe ik dit op mijn nas zou kunnen krijgen.

Wat ik al heb gevonden is da manier om de api aan te spreken. Dit heb ik momenteel in mijn script staan als curl. Dan krijg ik de volgende call:

result=$(curl -X GET --header "Accept: */*" "https://www.albion-online-data.com/api/v1/stats/Prices/T5_CLOTH?locations=Thetford%2CCaerleon")



Dit heb ik als een scheduled task gezet en de output daarvan is als volgt:

JavaScript:
1
[{"item_id":"T5_CLOTH","city":"Caerleon","quality":0,"sell_price_min":2042,"sell_price_min_date":"2019-04-25T20:46:00","sell_price_max":2042,"sell_price_max_date":"2019-04-25T20:46:00","buy_price_min":2,"buy_price_min_date":"2019-04-25T20:46:00","buy_price_max":1954,"buy_price_max_date":"2019-04-25T20:46:00"},{"item_id":"T5_CLOTH","city":"Thetford","quality":0,"sell_price_min":1819,"sell_price_min_date":"2019-04-24T21:11:00","sell_price_max":5000,"sell_price_max_date":"2019-04-24T21:11:00","buy_price_min":1,"buy_price_min_date":"2019-04-24T23:56:00","buy_price_max":1,"buy_price_max_date":"2019-04-24T23:56:00"}]



Maar dan moet ik dat dus opsplitsen en naar de database kunnen wegschrijven, maar daar kan ik dus geen goede manieren voor vinden. Momenteel ben ik dus met een .sh script bezig aangezien het op zich geen zwaar of moeilijk script zou mogen zijn. Met Powershell zou ik dit heel snel geschreven hebben, maar Bash is me toch nog net even een ander beest.

Enige tips of pointers to the right direction?

[ Voor 0% gewijzigd door RobIII op 26-04-2019 19:18 . Reden: Code tags gebruikt ]

BNet tag: whodares#1162

Alle reacties


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
whodares schreef op vrijdag 26 april 2019 @ 18:56:
Ik probeer een simpele scheduled task te maken die een api aanspreekt en de values daarvan naar de lokale phpMyAdmin MariaDB10 wegschrijft.
Een phpmyadmin mariadb bestaat niet. Je hebt gewoon een mariadb database en draait phpmyadmin (en dus php) om die te beheren. Ik zou dus ook vooral niet gaan liggen frotten met shellscripts maar gewoon een php bestandje maken en die vanuit je cron aantrappen. Véél meer over te vinden en stukken makkelijker (bijv. json_decode())

Verder: als je code post gebruik dan aub code tags.

[ Voor 40% gewijzigd door RobIII op 26-04-2019 19:21 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • whodares
  • Registratie: Februari 2009
  • Laatst online: 26-11-2023
RobIII schreef op vrijdag 26 april 2019 @ 19:13:
[...]


Een phpmyadmin mariadb bestaat niet. Je hebt gewoon een mariadb database en draait phpmyadmin (en dus php) om die te beheren. Ik zou dus ook vooral niet gaan liggen frotten met shellscripts maar gewoon een php bestandje maken en die vanuit je cron aantrappen. Véél meer over te vinden en stukken makkelijker (bijv. json_decode())

Verder: als je code post gebruik dan aub code tags.
Bedankt. Ik zal dan toch maar naar de php-scriptjes kijken om dit allemaal in orde te krijgen.

BNet tag: whodares#1162


Acties:
  • 0 Henk 'm!

  • Kalentum
  • Registratie: Juni 2004
  • Laatst online: 19:34
Misschien een iets andere denkrichting: waarom niet gewoon de hele JSON response van die webservice opslaan in een database? Je database kan prima JSON aan en je hoeft dan niet de JSON te parsen bij het binnenhalen van de response. Dat kun je later doen of door je database laten doen.

Acties:
  • 0 Henk 'm!

  • whodares
  • Registratie: Februari 2009
  • Laatst online: 26-11-2023
De dingen blijven vreemder en vreemder worden. Ik ben begonnen met een php script te schrijven en de api aanroepen en decoden enzo was geen probleem. Dan probeer ik echter mysqli te gebruiken en daar gaat het de mist in. Hij kan mysqli niet terugvinden. Ik kan nochtans wel naar mijn phpMyAdmin connecteren zonder problemen.

Wat opgezocht op het internet, heb ik "extension = mysqli.so" toegevoegd in mijn /etc/php/php.ini en dan krijg ik dat hij de module niet kan vinden. Ga ik kijken in de extension folder /usr/lib/php/modules en daar staat die inderdaad niet tussen.

Dan ben ik maar eens gaan zoeken waar die mysqli WEL staat, maar die kan ik niet vinden. Best een vreemde situatie. Misschien dat ik best al die php zooi er eens afgooi en terug opnieuw installeer.

BNet tag: whodares#1162


Acties:
  • +1 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Gebruik PDO. Overigens kun je in PHPMyAdmin in het "home" scherm zien wat PHPMyAdmin gebruikt.

[ Voor 79% gewijzigd door RobIII op 27-04-2019 00:18 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • biomass
  • Registratie: Augustus 2004
  • Laatst online: 18:31
whodares schreef op vrijdag 26 april 2019 @ 22:44:
De dingen blijven vreemder en vreemder worden. Ik ben begonnen met een php script te schrijven en de api aanroepen en decoden enzo was geen probleem. Dan probeer ik echter mysqli te gebruiken en daar gaat het de mist in. Hij kan mysqli niet terugvinden. Ik kan nochtans wel naar mijn phpMyAdmin connecteren zonder problemen.

Wat opgezocht op het internet, heb ik "extension = mysqli.so" toegevoegd in mijn /etc/php/php.ini en dan krijg ik dat hij de module niet kan vinden. Ga ik kijken in de extension folder /usr/lib/php/modules en daar staat die inderdaad niet tussen.

Dan ben ik maar eens gaan zoeken waar die mysqli WEL staat, maar die kan ik niet vinden. Best een vreemde situatie. Misschien dat ik best al die php zooi er eens afgooi en terug opnieuw installeer.
Een Synology package heeft een usr/bin folder?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
admin@diskstation:/volume2/@appstore/MariaDB/usr/bin$ ls
aria_chk           mysqlbinlog                 mysql_plugin
aria_dump_log      mysqlbug                    mysql_setpermission
aria_ftdump        mysqlcheck                  mysqlshow
aria_pack          mysql_convert_table_format  mysqlslap
aria_read_log      mysqld                      mysqltest
innochecksum       mysqld_multi                mysql_tzinfo_to_sql
msql2mysql         mysqld_safe                 mysql_upgrade
myisamchk          mysqld_safe_helper          mysql_waitpid
myisam_ftdump      mysqldump                   mysql_zap
myisamlog          mysqldumpslow               perror
myisampack         mysql_find_rows             replace
my_print_defaults  mysql_fix_extensions        resolveip
mysql              mysqlhotcopy                resolve_stack_dump
mysqlaccess        mysqlimport
mysqladmin         mysql_install_db

Acties:
  • 0 Henk 'm!

  • whodares
  • Registratie: Februari 2009
  • Laatst online: 26-11-2023
RobIII schreef op zaterdag 27 april 2019 @ 00:17:
Gebruik PDO. Overigens kun je in PHPMyAdmin in het "home" scherm zien wat PHPMyAdmin gebruikt.
Dit ga ik eens proberen, zien wat dat geeft. Ik had tot nu toe altijd met mysqli gewerkt en kende PDO zelfs niet, dus dit is echt een geweldige find. Bedankt voor de tip!
biomass schreef op zaterdag 27 april 2019 @ 00:42:
[...]

Een Synology package heeft een usr/bin folder?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
admin@diskstation:/volume2/@appstore/MariaDB/usr/bin$ ls
aria_chk           mysqlbinlog                 mysql_plugin
aria_dump_log      mysqlbug                    mysql_setpermission
aria_ftdump        mysqlcheck                  mysqlshow
aria_pack          mysql_convert_table_format  mysqlslap
aria_read_log      mysqld                      mysqltest
innochecksum       mysqld_multi                mysql_tzinfo_to_sql
msql2mysql         mysqld_safe                 mysql_upgrade
myisamchk          mysqld_safe_helper          mysql_waitpid
myisam_ftdump      mysqldump                   mysql_zap
myisamlog          mysqldumpslow               perror
myisampack         mysql_find_rows             replace
my_print_defaults  mysql_fix_extensions        resolveip
mysql              mysqlhotcopy                resolve_stack_dump
mysqlaccess        mysqlimport
mysqladmin         mysql_install_db
Dit is dus waar het vreemd wordt. Ik heb al mijn php packages en de dependencies allemaal erafgegooid en toch heb ik in mijn task scheduler nog steeds de mogelijkheid om php te draaien. Hier heb ik dan wat over opgezocht en het zou mogelijks te maken hebben met het feit dat mijn systeem nog een oudere versie (pre DSM 6) draaide. Hierin zou, volgens wat ik heb kunnen vinden, een php ingebakken zitten. Daar packages op installeren is echter net iets anders om te doen.

BNet tag: whodares#1162


Acties:
  • 0 Henk 'm!

  • biomass
  • Registratie: Augustus 2004
  • Laatst online: 18:31
Ik ben zelf nieuwsgierig geworden om zelf wat code te gaan bakken voor m'n NAS en heb de PHP packages van DSM6.2 gechecked
PHP 5, php -i geeft
code:
1
2
3
4
5
6
7
8
9
PDO

PDO support => enabled
PDO drivers => sqlite

pdo_sqlite

PDO Driver for SQLite 3.x => enabled
SQLite Library => 3.10.2

PHP 7, php70 -i geeft
code:
1
2
3
4
PDO

PDO support => enabled
PDO drivers =>

PHP 7.2, php72 -i geeft
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
PDO

PDO support => enabled
PDO drivers => dblib, mysql, pgsql, sqlite

pdo_dblib

PDO Driver for FreeTDS/Sybase DB-lib => enabled
Flavour => freetds

pdo_mysql

PDO Driver for MySQL => enabled
Client API version => mysqlnd 5.0.12-dev - 20150407 - $Id: 38fea24f2847fa7519001be390c98ae0acafe387 $

Directive => Local Value => Master Value
pdo_mysql.default_socket => /tmp/mysql.sock => /tmp/mysql.sock

pdo_pgsql

PDO Driver for PostgreSQL => enabled
PostgreSQL(libpq) Version => 9.3.6
Module version => 7.2.13
Revision =>  $Id: 9c5f356c77143981d2e905e276e439501fe0f419 $

pdo_sqlite

PDO Driver for SQLite 3.x => enabled
SQLite Library => 3.10.2

Het gaat er om dat je een php build aanspreekt die PDO support ingebakken heeft (inclusief drivers).
Welke PHP packages kun jij kiezen voor jouw DSM versie? Al eens overwogen te upgraden?

Acties:
  • 0 Henk 'm!

  • whodares
  • Registratie: Februari 2009
  • Laatst online: 26-11-2023
Na een break van het probleem te hebben gepakt, heb ik het opgelost gekregen. Op zich is het heel stom en simpel nu ik de oplossing heb, dus gelieve niet te lachen.

Met dat @biomass begon over de packages, moest ik maar steeds terugdenken aan mijn tijd via Putty in de CLI. Daar gebruikte ik php -v voor versie 5.6, wat mijn default installed versie is ZONDER packages. Echter kon ik ook php56 oproepen om zo die package te gebruiken. In php56 waren mysqli enzo allemaal WEL geïnstalleerd.

Wat ik dan gedaan heb, is nog eens naar mijn scheduled task gekeken. Ik zag dat ik daar het script aanriep met "php /pathtoscript". Dit heb ik veranderd naar "php56 /pathtoscript" en mijn problemen waren allemaal ineens weg!

Blijkbaar was ik dus in de verkeerde richting aan het zoeken, omdat alle tutorials en examples die ik kon vinden gewoon php gebruikten ipv een package aan te spreken.

BNet tag: whodares#1162


Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 17:29

Matis

Rubber Rocket

PHP 5.6 wordt niet meer ondersteund / geüpdatet. Het is misschien verstandig om te upgraden naar PHP 7.2 of hoger.
Zie ook https://www.php.net/supported-versions.php

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • whodares
  • Registratie: Februari 2009
  • Laatst online: 26-11-2023
Matis schreef op zaterdag 27 april 2019 @ 19:10:
PHP 5.6 wordt niet meer ondersteund / geüpdatet. Het is misschien verstandig om te upgraden naar PHP 7.2 of hoger.
Zie ook https://www.php.net/supported-versions.php
7.2 is de laatste versie die ondersteund wordt voor mijn nas momenteel. Ik heb ondertussen inderdaad daar naar geupgraded nu en ben die ook aan het gebruiken. Het vervelende is natuurlijk dat ik mijn built-in php niet kan upgraden.

BNet tag: whodares#1162


Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 17:29

Matis

Rubber Rocket

Ik weet niet precies hoe zo'n Synology werkt, maar kun je je default PHP niet laten wijzen naar 7.2.

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • whodares
  • Registratie: Februari 2009
  • Laatst online: 26-11-2023
Dat was een beetje het probleem. Ik kan nergens vinden waar mijn default php wordt gezet. Ik weet dat mijn huidige default php niets met de packages te maken heeft, aangezien het ook werkt zonder ook maar 1 package te hebben geïnstalleerd.

Nu ik het weet, ga ik er niet echt meer wakker van liggen. Dan zet ik maar gewoon php72 voor mijn scriptjes ipv php.

BNet tag: whodares#1162


Acties:
  • 0 Henk 'm!

  • TweakMDS
  • Registratie: Mei 2002
  • Laatst online: 30-09 09:17
Even een geheel andere richting; volgens mij zou je node red ook op een DS213 kunnen draaien. Dat is uitermate geschikt om dit soort taakjes mee te doen, met name database toegang, en api calls, die dan weer de output transformeren van het een naar het ander. Ik heb er in ieder geval al menig moeilijker ding mee kunnen maken.

Wellicht een leuke optie om te bekijken, mocht je eruit komen om node red te installeren.
https://www.rs-online.com...ode-red-on-a-synology-nas
Pagina: 1