/* 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);