Автор | Сообщение |
|
| |
Пост N: 4169
Зарегистрирован: 17.05.05
|
|
Отправлено: 19.08.14 17:42. Заголовок: Снова FTP
Проблема уже запарила. Одна и та же программа у 80 % юзеров работает нормально. У остальных проблема в связи по FTP. Связь организована с помощью HBTIP. На проблемных машинах по команде LIST или попытке скачать файл получаем ошибку FTP Error 425 "Can't open data connection" Чисто ради эксперимента такую проблемную машину подключили через мобильный инет. Связь с ФТП работает отлично. Звонили провайдеру , тот говорит что ни какие порты не закрывали. Куда копать не понимаю. Помнится раньше в Harbour была библиотека WHAT32 и в самых ранних своих версиях программы связь я реализовывал с ее помощью. А можно как то реанимировать функции из WHAT32 по работе с FTP ? PS Проверяли связь по ФТП через Total Commander , там проблем нет не с LIST ни со сливом файла.
|
|
|
Ответов - 18
[только новые]
|
|
|
| постоянный участник
|
Пост N: 388
Зарегистрирован: 17.02.12
|
|
Отправлено: 19.08.14 18:19. Заголовок: Dima У меня FTP на ..
Dima У меня FTP на VO 2.7 много лет ok!, но у одного клиента никак. Сделал все на FTP.EXE и забыл.
|
|
|
|
| |
Пост N: 4170
Зарегистрирован: 17.05.05
|
|
Отправлено: 19.08.14 18:28. Заголовок: SergKis пишет: Сдел..
SergKis пишет: цитата: | Сделал все на FTP.EXE и забыл. |
| А можешь маленький пример показать , подключение , получение LIST , отключение ? В общем я догадываюсь что работаешь через файл "сценария" опции -S , вот только не представляю как забрать в прогу ответ той же команды LIST , для дальнейшего анализа.
|
|
|
|
| постоянный участник
|
Пост N: 389
Зарегистрирован: 17.02.12
|
|
Отправлено: 19.08.14 21:06. Заголовок: Dima пишет:маленький..
Dima пишет: вот bat файл (его читаю, меняю _____, ------- на имена файлов, ##### на IP) сохраняю с др.именем и запускаю: Скрытый текст
@echo off for %%c in (%FTP%\%MES%\#_???_??.uch) do del %%c > nul rem PUT to FTP echo ===== Put,Dir ====== > ftp_win.txt ftp.exe -v -n -s:_____ -w:8192 ##### >> ftp_win.txt %PLL%\dbu.exe ^.\SCRIPT\umz_err.prg if exist ftp.err goto e rem DIR from FTP %PLL%\dbu.exe ^.\SCRIPT\umz_dir.prg rem GET from FTP echo ===== Get ========== >> ftp_win.txt ftp.exe -v -n -s:----- -w:8192 ##### >> ftp_win.txt %PLL%\dbu.exe ^.\SCRIPT\umz_err.prg if exist ftp.err goto e if exist ftp_dir.lst copy ftp_dir.lst %FTP%\%MES%\dir.lst > nul if exist ftp_dir.lst del ftp_dir.lst > nul if exist ftp.get del ftp.get > nul if exist ftp.lst del ftp.lst > nul for %%c in (%FTP%\%MES%\#_???_??.uch) do Call .\SCRIPT\uch_tst.bat %%c :e if exist ftp.blk del ftp.blk > nul
| dbu.exe утилита скрипта (это еще S87), пример скрипта UMZ_ERR.PRG: Скрытый текст
m->Q0="FTP_WIN" aRead(m->Q0+".TXT","aFtp_Win",1) m->J2=len(m->aFtp_Win) fErase("FTP.ERR") FOR m->J1=1 TO m->J2 IF "Not conn" $ aFtp_Win[m->J1] tone(5000,1) mWrite("FTP.ERR","Not connected",1) m->J3=sv_wnd(24,0,24,79) Say(24,0,tm0("FTP not connected",80),79) inkey(0) rs_wnd(m->J3) QUIT 1 ENDIF NEXT QUIT
|
|
|
|
|
| |
Пост N: 4171
Зарегистрирован: 17.05.05
|
|
Отправлено: 19.08.14 21:13. Заголовок: SergKis спасибо , с..
SergKis спасибо , сходу не осилил , многа букав. завтра внимательнее посмотрю. PS Порой сам такое напишу (закодю) что сразу не пойму , спустя пару месяцев ;)
|
|
|
|
| постоянный участник
|
Пост N: 390
Зарегистрирован: 17.02.12
|
|
Отправлено: 19.08.14 21:29. Заголовок: Dima пишет:многа бук..
Dima пишет: сам с трудом вспомнил (начало 2000-х). в догонку скрипт (создает файл команд) для bat файла, котрый выше в посте: Скрытый текст
m->J0="FTP_WIN.LST" m->S0="FTP_GET.LST" IF ! file(m->J0) m->J1=mGIniC([S_NET.INI],[FTP],"User") m->J2=mGIniC([S_NET.INI],[FTP],"Password") mWrite(m->J0,"user "+m->J1+" "+m->J2+chr(13)+chr(10),1) mWrite(m->S0,"user "+m->J1+" "+m->J2+chr(13)+chr(10),1) m->J1=mGIniC([S_NET.INI],[FTP],"CurDir") mWrite(m->J0,"mkdir "+m->J1+chr(13)+chr(10)) mWrite(m->J0,"cd "+m->J1+chr(13)+chr(10)) mWrite(m->S0,"cd "+m->J1+chr(13)+chr(10)) mWrite(m->J0,"mkdir "+m->Q2+chr(13)+chr(10)) mWrite(m->J0,"cd "+m->Q2+chr(13)+chr(10)) mWrite(m->S0,"cd "+m->Q2+chr(13)+chr(10)) mWrite(m->J0,"lcd "+m->Q1+chr(13)+chr(10)) mWrite(m->S0,"lcd "+m->Q1+chr(13)+chr(10)) mWrite(m->J0,"lcd "+m->Q2+chr(13)+chr(10)) mWrite(m->S0,"lcd "+m->Q2+chr(13)+chr(10)) mWrite(m->J0,"type binary"+chr(13)+chr(10)) mWrite(m->S0,"type binary"+chr(13)+chr(10)) ENDIF IF "PUT" $ m->Q5 m->J9=m->Q4+"_"+m->Q3+".UCH" mWrite(m->J0,"put "+m->J9+" "+"#_"+m->J9+chr(13)+chr(10)) mWrite(m->J0,"delete "+m->J9+chr(13)+chr(10)) mWrite(m->J0,"rename "+"#_"+m->J9+" "+m->J9+chr(13)+chr(10)) ENDIF IF "DIR" $ m->Q5 mWrite(m->J0,"lcd .. "+chr(13)+chr(10)) mWrite(m->J0,"lcd .. "+chr(13)+chr(10)) mWrite(m->J0,"dir "+chr(13)+chr(10)) mWrite(m->J0,"quit "+chr(13)+chr(10)) m->J0="FTP_WIN" m->J1=mRead(".\SCRIPT\"+m->J0+".BAT") m->J2=mGIniC([S_NET.INI],[FTP],"Server") m->J1=StrTran(m->J1,"_____",".\"+m->J0+".LST") m->J1=StrTran(m->J1,"-----",".\"+m->S0) m->J1=StrTran(m->J1,"#####",m->J2) mWrite(".\"+m->J0+".BAT",m->J1,1) ENDIF QUIT
|
|
|
|
|
| |
Пост N: 4172
Зарегистрирован: 17.05.05
|
|
Отправлено: 20.08.14 10:19. Заголовок: SergKis сделал пару..
SergKis сделал пару тестов , та же фигня .....425 ошибка на LS файл сценария (ip я перебил) open 111.11.11.11 21 user dima parolik type binary literal pasv ls *.zip quit запускаю так ftp -v -n -s:t.txt >my.log
|
|
|
|
| постоянный участник
|
Пост N: 391
Зарегистрирован: 17.02.12
|
|
Отправлено: 20.08.14 10:35. Заголовок: Dima пишет: та же фи..
Dima пишет: цитата: | та же фигня .....425 ошибка |
| не знаю, что сказать - давно было, когда щупал ftp.exe. попробуй организовать подкаталог с переходом туда, сейчас стучишься на home сервера. я использовал dir, почему не ls - не помню. сори
|
|
|
|
| постоянный участник
|
Пост N: 392
Зарегистрирован: 17.02.12
|
|
Отправлено: 20.08.14 10:46. Заголовок: Dima стандартный кл..
Dima цитата: | стандартный клиент FTP в операционных системах Windows поддерживает далеко не полный перечень ftp-команд и, что самое важное - не поддерживает команду переключения в пассивный режим ( passv ) обмена с сервером FTP, что делает его непригодным для обмена данными с серверами FTP, подключение к которым выполняется с использованием технологии трансляции сетевых адресов NAT . Именно этот факт предопределяет область использования утилиты ftp.exe - только в локальных сетях. |
| у клиента не шла на VO как раз локалка.
|
|
|
|
| |
Пост N: 4173
Зарегистрирован: 17.05.05
|
|
Отправлено: 20.08.14 10:55. Заголовок: SergKis пишет: не п..
SergKis пишет: цитата: | не поддерживает команду переключения в пассивный режим ( passv ) обмена с сервером FTP, |
| это обходится вот такой командой literal pasv проверял log ftp , passive устанавливается
|
|
|
|
| |
Пост N: 4190
Зарегистрирован: 17.05.05
|
|
Отправлено: 25.08.14 10:30. Заголовок: Разобрались. Дело в ..
Разобрались. Дело в длине имени файла. Такой файл не тянется W_99^[sklad]#177D729F.zip , такой тянется W_99^[sklad]#77D729F.zip При чем это зависит от провайдера , проверили. После cимвола # в имени файла у меня идет уникальный код полученный из целого числа с помощью numtohex. Что то типа numtohex(1238773222,8) А есть ли какая функция что бы получить такой код длиной из 3 символов ? Вариант numtohex(1238773222,3) не предлагать ;)
|
|
|
|
| |
Пост N: 108
Зарегистрирован: 21.04.13
|
|
Отправлено: 25.08.14 17:17. Заголовок: Можно проще..
Можно проще - применять небольшой файл-ярлык типа ini txt или xml с простым именем вместо шифрования имени скачиваемого файла. А в этом ini - и держать все нужные атрибуты - что и откуда скачивать
|
|
|
|
|
| |
Пост N: 4191
Зарегистрирован: 17.05.05
|
|
Отправлено: 25.08.14 21:00. Заголовок: petr707 так не пойд..
petr707 так не пойдет. 40 торговых точек и у каждой имя файла должно быть уникальным.
|
|
|
|
| постоянный участник
|
Пост N: 398
Зарегистрирован: 17.02.12
|
|
Отправлено: 25.08.14 21:14. Заголовок: Dima вот функции (м..
Dima вот функции (может подойдет) : Скрытый текст
FUNCTION NUM_KOD0( nKod ) // число в код IF valtype( nKod ) == "N"; RETURN baNUM_KOD3( nKod ) ENDIF RETURN "000" FUNCTION KOD_NUM0( cKod ) // код в число IF valtype( cKod ) == "C"; RETURN baKOD3_NUM( cKod ) ENDIF RETURN 0 FUNCTION KOD_ADD0( cKod ) // к коду + 1 (инкремент) IF valtype( cKod ) == "C"; RETURN baNUM_KOD3( baKOD3_NUM(cKod) + 1 ) ENDIF RETURN cKod STATIC FUNCTION baKOD3_NUM( cKod3 ) LOCAL dwKd3 := 0, dwKd, dwBase, ind := 48, Max_Kod := 239 dwBase := MAX_KOD - IND + 1 dwKd := Asc( SubS(cKod3, 1, 1) ) dwKd := iif( dwKd < IND .OR. dwKd > MAX_KOD, IND, dwKd) - IND dwKd3 := dwKd * dwBase * dwBase dwKd := Asc( SubS(cKod3, 2, 1) ) dwKd := iif( dwKd < IND .OR. dwKd > MAX_KOD, IND, dwKd) - IND dwKd3 += (dwKd * dwBase) dwKd := Asc( SubS(cKod3, 3, 1) ) dwKd := iif( dwKd < IND .OR. dwKd > MAX_KOD, IND, dwKd) - IND RETURN (dwKd3 + dwKd) STATIC FUNCTION baNUM_KOD3( nKod ) LOCAL dwBase, dwKd2, dwKd, dwMax, cKod, ind := 48, Max_Kod := 239 dwBase := MAX_KOD - IND + 1 dwKd2 := dwBase * dwBase dwMax := dwKd2 * dwBase - 1 IF nKod < 0 .OR. nKod > dwMax; RETURN "000" ENDIF dwKd := int(nKod / dwKd2) cKod := CHR( dwKd + IND ) nKod -= (dwKd * dwKd2) dwKd := int(nKod / dwBase) cKod += CHR( dwKd + IND ) nKod -= (dwKd * dwBase) dwKd := nKod RETURN (cKod + CHR( dwKd + IND ))
|
|
|
|
|
| |
Пост N: 4193
Зарегистрирован: 17.05.05
|
|
Отправлено: 25.08.14 21:24. Заголовок: SergKis Спасибо , и..
SergKis Спасибо , изучу.
|
|
|
|
| |
Пост N: 110
Зарегистрирован: 21.04.13
|
|
Отправлено: 25.08.14 21:28. Заголовок: Уникальное имя файла для точки
А какие проблемы ? Каждая точка читает один ini-файл, находит в этом файле строку - по своему уникальному ID-коду (например,123) свое имя файла и качает его ===what.ini=== [filename] 123=fffff..123.....zip 124=bbbbbb.zip ... 777=dddd.zip
|
|
|
|
| |
Пост N: 4194
Зарегистрирован: 17.05.05
|
|
Отправлено: 25.08.14 22:42. Заголовок: petr707 Да тоже вар..
petr707 Да тоже вариант , спасибо !
|
|
|
|
| |
Пост N: 374
Зарегистрирован: 03.12.08
|
|
Отправлено: 13.02.18 11:40. Заголовок: Задача - открыть опр..
Задача - открыть определенный файл (текстовый) на удалённом FTP-сервере и просто дописать в конец файла какую-то строку ... и закрыть файл . Это вообще реализуемо ? сейчас приходится скачивать файл к себе , модифицировать и отправлять назад ....
|
|
|
|
| постоянный участник
|
Пост N: 1576
Зарегистрирован: 09.10.06
|
|
Отправлено: 14.02.18 08:42. Заголовок: Softlog86 пишет: Эт..
Softlog86 пишет: append local-file [remote-file] Append a local file to a file on the remote machine. If remote-file is left unspecified, the local file name is used in naming the remote file after being altered by any ntrans or nmap setting. File transfer uses the current settings for type, format, mode, and structure. A list of all vailable ftp commands
|
|
|
|