This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm that you accept these cookies being set.

Error while writing to ftp
#1
Hi

I am trying to write files to external ftp. I get the following answer from the ftp-server:

504 Form must be N or T

What does this mean? I have tested the script to a server I set up for testing, and it worked, but in the real server where the files are t o be written I am not able to write.

Code:
ftpAdresse = '192.168.0.198'
ftpMappeDaily = '/FTPtest/Daily/'
ftpMappeHistory = '/FTPtest/History/'
username = 'Spacelynk'
pw = 'Test123'

-----------------------------------------------------------------------------------------------------------------------
--Finner alle lamper i anlegget
-----------------------------------------------------------------------------------------------------------------------
lamper = db:getall('SELECT name FROM objects WHERE name LIKE "%TEST_RESULT%"')

-----------------------------------------------------------------------------------------------------------------------
--Navnelister resultater fra test
-----------------------------------------------------------------------------------------------------------------------
LTRF = {
  {val = 0, Text = 'Unknown'},
  {val = 1, Text = 'Passed in time'},
  {val = 2, Text = 'Passed max delay exceeded'},
  {val = 3, Text = 'Failed, test executed in time'},
  {val = 4, Text = 'Failed, max delay exceeded'},
  {val = 5, Text = 'Test manually stopped'},
  {val = 6, Text = 'Invalid value; 6'},
 
  {val = 7, Text = 'Invalid value; 7'},
  {val = 8, Text = 'Invalid value; 8'},
  {val = 9, Text = 'Invalid value; 9'},
  {val = 10, Text = 'Invalid value; 10'},
  {val = 11, Text = 'Invalid value; 11'},
  {val = 12, Text = 'Invalid value; 12'},
  {val = 13, Text = 'Invalid value; 13'},
  {val = 14, Text = 'Invalid value; 14'},
  {val = 15, Text = 'Invalid value; 15'},
}

LTRD = {
  {val = 0, Text = 'Unknown'},
  {val = 1, Text = 'Passed in time'},
  {val = 2, Text = 'Passed max delay exceeded'},
  {val = 3, Text = 'Failed, test executed in time'},
  {val = 4, Text = 'Failed, max delay exceeded'},
  {val = 5, Text = 'Test manually stopped'},
  {val = 6, Text = 'Invalid value; 6'},
  {val = 7, Text = 'Invalid value; 7'},
  {val = 8, Text = 'Invalid value; 8'},
  {val = 9, Text = 'Invalid value; 9'},
  {val = 10, Text = 'Invalid value; 10'},
  {val = 11, Text = 'Invalid value; 11'},
  {val = 12, Text = 'Invalid value; 12'},
  {val = 13, Text = 'Invalid value; 13'},
  {val = 14, Text = 'Invalid value; 14'},
  {val = 15, Text = 'Invalid value; 15'},
}

SF = {
  {val = 0, Text = 'Unknown'},
  {val = 1, Text = 'Started automatically'},
  {val = 2, Text = 'Started by Gateway'},
  {val = 3, Text = 'Reserved'},
}

SD = {
  {val = 0, Text = 'Unknown'},
  {val = 1, Text = 'Started automatically'},
  {val = 2, Text = 'Started by Gateway'},
  {val = 3, Text = 'Reserved'},
}

-----------------------------------------------------------------------------------------------------------------------
--Oppretter filer for lagring av verdier
-----------------------------------------------------------------------------------------------------------------------
now = os.date('*t')
time = {
day = wday,
hour = now.hour,
minute = now.min,
second = now.sec,
}

reportFile = string.format('CurrentReport.csv')
historyFile = string.format('%s-Report.csv', os.date('%d-%m-%Y',log_start))
reportBuffer = {'Resultater fra test.',  'Test startet; ' .. os.date('%d/%m-%Y',log_start) .. ' klokken ' .. time.hour .. '.' .. time.minute ,
  'Rom; Lampe; Siste funksjonstest; Siste batteritest; Startmetode FT; Startmetode BT' }

-----------------------------------------------------------------------------------------------------------------------
-- Henter verdier fra lamper
-----------------------------------------------------------------------------------------------------------------------
for _, lampe in ipairs(lamper) do
  navn = lampe.name
  rom = string.split(navn, ' =')[1]
  lampe = '=' .. string.split(string.split(navn, '=')[2], ' ')[1]
  --log(rom, lampe)
  verdi = grp.getvalue(navn)

  --Finner LTRF
  for _, linje in ipairs(LTRF) do
    if linje.val == verdi.ltrf then
      LTRF_text = linje.Text
    elseif verdi.ltrf == nil then
      LTRF_text = 'Not found'
    end
  end
  --Finner LTRD
  for _, linje in ipairs(LTRD) do
    if linje.val == verdi.ltrd then
      LTRD_text = linje.Text
    elseif verdi.ltrd == nil then
      LTRD_text = 'Not found'
    end
  end 
  --Finner SF
  for _, linje in ipairs(SF) do
    if linje.val == verdi.sf then
      SF_text = linje.Text
    elseif verdi.sf == nil then
      SF_text = 'Not found'
    end
  end
  --Finner SD
  for _, linje in ipairs(SD) do
    if linje.val == verdi.sd then
      SD_text = linje.Text
    elseif verdi.sd == nil then
      SD_text = 'Not found'
    end
  end
  table.insert(reportBuffer, rom .. ';' .. lampe .. ';' .. LTRF_text .. ';' .. LTRD_text .. ';' .. SF_text .. ';' .. SD_text)
 
  --log(navn, LTRF_text, LTRD_text, SF_text, SD_text)
  --log(navn, verdi)
end

-----------------------------------------------------------------------------------------------------------------------
-- Skriver fil til SL HD
-----------------------------------------------------------------------------------------------------------------------
rapport = string.char(0xEF, 0xBB, 0xBF)
csv = rapport .. table.concat(reportBuffer, '\r\n')
result, err = io.writefile ('/home/ftp/' .. reportFile, csv)
resultHist, err = io.writefile ('/home/ftp/' .. historyFile, csv)
log(result, err)


-----------------------------------------------------------------------------------------------------------------------
-- Skriver fil til FTP; historisk fil og dagens fil
-----------------------------------------------------------------------------------------------------------------------
local ftp = require("socket.ftp")
local ltn12 = require("ltn12")
targetHist = ftpMappeHistory .. historyFile
targetDay = ftpMappeDaily .. reportFile

log(targetHist)
dst = '/home/ftp/' .. historyFile

f, e = socket.ftp.put{
  host = ftpAdresse,
  user = username,
  password = pw,
  type = "a n",
  argument = targetHist,
  source = ltn12.source.file(io.open(dst, "rb"))
 
}

if (e) then
  log (e)
  log (f)
  alert("Could not ftp: ", e, "\n")
end


log(targetDay)
dst = '/home/ftp/' .. reportFile

f, e = socket.ftp.put{
  host = ftpAdresse,
  user = username,
  password = pw,
  type = "a n",
  argument = targetDay,
  source = ltn12.source.file(io.open(dst, "rb"))
 
}

if (e) then
  log (e)
  log (f)
  alert("Could not ftp: ", e, "\n")
end
There are 10 kinds of people in the world; those who can read binary and those who don't  Cool
Reply
#2
"type" argument for ftp.put must be a single letter. You can also remove it completely, it should work without it in most cases.
Reply
#3
(06.02.2023, 14:17)admin Wrote: "type" argument for ftp.put must be a single letter. You can also remove it completely, it should work without it in most cases.

Great. That did it!
There are 10 kinds of people in the world; those who can read binary and those who don't  Cool
Reply


Forum Jump: