no way to compare when less than two revisions

Differences

This shows you the differences between two versions of the page.


sdk:scripts:transfer [2015/05/05 15:04] (current) – created - external edit 127.0.0.1
Line 1: Line 1:
 +====== SDK Script transfer.are ======
 +<code c transfer.are>
 +/* DESC: This scripts stores the latest GNSS positions in a remote FTP file
 + * Copyright (C) 2014 NetModule AG, Switzerland
 + */
 +
 +SITE = "ftp://x.x.x.x/test";
 +USR = "username";
 +PWD = "password";
 +DATA = "data";
 +
 +/* list a directory */
 +files = nb_transfer_list(USR, PWD, SITE);
 +
 +/* dump(files); */
 +
 +/* 
 + * delete all files starting with DATA, filesize greater 1k and older than 10 minutes 
 + */
 +for (i = 0; i < length(files); i++) {
 +    file = files[i];
 +
 +    name = struct_get(file, "name");
 +    size = struct_get(file, "size");
 +    tm = struct_get(file, "tm");
 +
 +    if (left(name, strlen(DATA)) != DATA) continue;
 +
 +    if (size < 1024) continue;
 +
 +    now = localtime(time());
 +    age = mktime(now) - mktime(tm);
 +
 +    if (age <= (60 * 10)) continue;
 +
 +    nb_syslog("deleting '%s' (size %d, age %ds) from remote site", name, size, age);
 +
 +    if (nb_transfer_delete(USR, PWD, sprintf("%s/%s", SITE, name)) != 0) {
 +        nb_syslog("unable to delete '%s'", name);
 +    }
 +}
 +
 +/* 
 + * download data, modify and upload it 
 +*/
 +
 +if (nb_transfer_get(USR, PWD, sprintf("%s/%s", SITE, DATA), DATA) == 0) {
 +    fp = fopen(DATA, "a");
 +    if (fp) {
 +        status = nb_status("gnss");
 +        lat = struct_get(status, "GNSS1_LATITUDE");
 +        lon = struct_get(status, "GNSS1_LONGITUDE");
 +        now = localtime(time());
 +        timestamp = strftime("%Y-%m-%d %H:%M:%S", now);
 +
 +        fwrite(fp, sprintf("%s lat = %s, lon = %s\n", timestamp, lat, lon));
 +        fclose(fp);
 +
 +        nb_syslog("wrote down position (%s,%s) to local file", lat, lon);
 +
 +        if (nb_transfer_put(USR, PWD, sprintf("%s/%s", SITE, DATA), DATA) == 0) {
 +            nb_syslog("stored '%s' on remote site", DATA);
 +        } else {
 +            nb_syslog("unable transfer '%s'", DATA);
 +        }
 +
 +        unlink(DATA);
 +
 +    } else {
 +        nb_syslog("cannot open local '%s'", DATA);
 +    }
 +} else {
 +    nb_syslog("download of '%s' failed", DATA);
 +}
 +
 +
 +exit(0);
 +
 +</code>