Предлагаю Вашему вниманию организацию передачи данных между СУФД ОФК и СУФД УФК на основе протокола FTP.
В УФК установлен и настроен FTP сервер, с ним и предполагается работать, для работы с ним необходимо выбрать программное обеспечение способное осуществлять автоматическую доставку данных на ftp сервер и их получение с него.
В качестве такой программы предлагаю использовать универсальный ftp-клиент LFTP. Неомного о нём из wikipedia:
Что мы имеем? Консольный открытый и бесплатный ftp-клиент пришедший к нам из мира *NIX. В данном случае будем использовать клиент специально скомпилированный под WINDOWS.
Для удобства работы в файле C:\WINDOWS\system32\drivers\etc\hosts обозначим FTP сервер УФК как ftpufk
10.XX.6.2 ftpufk
Для работы с lftp необходимо скачать его дистрибутив, он представляет из себя исполняемый файл lftp.exe и библиотеки в к нему, дистрибутив не требует инсталяции с сразу готов к работе. Дистрибутив необходимо разместить по следующему пути C:\ftas01\prod\lftp причем в папке lftp должны лежать библиотеки и исполняемый файл lftp.exe
Настройка lftp
Схему работы организуем в два потока для обеспечения распараллеливания процессов получения и отправки. Для обеспечения наилучшего восприятия и удобочитаемости вынесем эти два процесса в отдельные исполняемые скрипты.
Исходные данные
При авторизации на FTP сервере будут расположены следующие папки:
9500.4700 - входящая папка УФК (сюда необходимо отправлять свои исходящие данные)
9500.4700.47XX - исходящая папка УФК (отсюда необходимо получать данные для своего ОФК, где XX - номер Вашего отделения)
В ОФК на сервере СУФД мы имеем следующее расположение папок:
C:\ftas01\prod\sufd\exchange\9500.4700 - исходящая папка ОФК, данные из этой папки необходимо доставить на ftp сервер УФК ftp://47XX:47XX@ftpufk/9500.4700
C:\ftas01\prod\sufd\exchange\9500.4700\9500.4700.47XX - входящая папка ОФК, сюда необходимо складывать все входящие данные в том числе и из папки 9500.4700.47XX на FTP сервере УФК ftp://47XX:47XX@ftpufk/9500.4700.47XX
Получение данных
Для получения данных с УФК используем следующую схему:
lftp получает данные с ftp сервера и складывает их в буфферную папку, после получения всех данных скрипт перекладывает данные из буферной папки во входящую папку СУФД C:\ftas01\prod\sufd\exchange\9500.4700\9500.4700.47XX
Для реализации такой l9;хемы необходимо создать:
Каталог C:\ftas01\prod\lftp\9500.4700.47XX
Файл download.bat
В файл download.bat необходимо внести следующее:
:1
lftp -u 47XX,47XX -e 'lcd /cygdrive/c/ftas01/prod/lftp/9500.4700.47XX;mget -E /9500.4700.47XX/*.*;sleep 3m;bye' ftpufk
move C:\ftas01\prod\lftp\9500.4700.47XX\*.shipment C:\ftas01\prod\sufd\exchange\9500.4700.47XX\
move C:\ftas01\prod\lftp\9500.4700.47XX\*.revising C:\ftas01\prod\sufd\exchange\9500.4700.47XX\
goto 1
Где:
:1 и goto1 - бесконечный цикл
lftp -u 47XX,47XX -e 'lcd /cygdrive/c/ftas01/prod/lftp/9500.4700.47XX;mget -E /9500.4700.47XX/*.*;sleep 3m;bye' ftpufk
lftp -u 47XX,47XX -e '...' ftpufk - подкючение к FTP с учетной записью 47XX,47XX и выполнение произвольного сценария -e '...'
lcd /cygdrive/c/ftas01/prod/lftp/9500.4700.47XX - переход в каталог C:\ftas01\prod\lftp\9500.4700.47XX на локальной машине, так как программа изначально создавалась под *NIX системы обратите внимание на своеобразный способ указывания каталога.
mget -E /9500.4700.47XX/*.* - забирать файлы с FTP сервера из каталога 9500.4700.47XX по маске *.* при успешном завершении исходные файлы с ftp автоматически удаляются.
sleep 3m - задаём интервал в 3 минуты
bye - разрыв соединения с FTP сервером
move C:\ftas01\prod\lftp\9500.4700.47XX\*.shipment C:\ftas01\prod\sufd\exchange\9500.4700.47XX\ - переброска полученных данных из буфферной папки во входящу папку СУФД, выбрана строго определённая маска по типам файлов намеренно, чтоб исключить попадания в СУФД сторонних данных, например при использовании канала для переброски обновлений СУФД.
Доставка данных
Для доставки данных в УФК используем следующую схему:
Скрипт переносит данные подлежащие отправке из C:\ftas01\prod\sufd\exchange\9500.4700 в буфферную папку C:\ftas01\prod\lftp\9500.4700, lftp перемещает содержимое буферной папки на FTP сервер УФК в папку 9500.4700
Для реализации такой схемы необходимо создать:
Каталог C:\ftas01\prod\lftp\9500.4700
Файл upload.bat
В файл upload.bat необходимо внести следующее:
:1
move C:\ftas01\prod\sufd\exchange\9500.4700\*.shipment C:\ftas01\prod\lftp\9500.4700\
move C:\ftas01\prod\sufd\exchange\9500.4700\*.revising C:\ftas01\prod\lftp\9500.4700\
lftp -u 47XX,47XX -e 'lcd /cygdrive/c/ftas01/prod/lftp/9500.4700;cd 9500.4700;mput -E *.*;sleep 3m;bye' ftpufk
goto 1
Где:
:1 и goto1 - бесконечный цикл
lftp -u 47XX,47XX -e 'lcd /cygdrive/c/ftas01/prod/lftp/9500.4700;cd 9500.4700;mput -E *.*;sleep 3m;bye' ftpufk
lftp -u 47XX,47XX -e '...' ftpufk - подкючение к FTP с учетной записью 47XX,47XX и выполнение произвольного сценария -e '...'
lcd /cygdrive/c/ftas01/prod/lftp/9500.4700 - переход в каталог C:\ftas01\prod\lftp\9500.4700 на локальной машине, так как программа изначально создавалась под *NIX системы обратите внимание на своеобразный способ указывания каталога.
cd 9500.4700 - переход в каталог 9500.4700 на FTP сервере UFK
mput -E *.* - доставлять файлы на FTP сервер по маске *.* при успешном завершении доставки исходные файлы на локальной машине автоматически удаляются.
sleep 3m - задаём интервал в 3 минуты
bye - разрыв соединения с FTP сервером
Итог
Настройка закончена, настала пора всё это проверить в деле. Технология достаточно отработана, при разрыве канала связи данные будут докачены автоматически. Lftp сам по себе очень гибок и позволяет реализовывать очень интересные сценарии.
В предложеной схеме существует один потенциальный недостаток при отработке сценария описанный в файле upload.bat возможен обрыв канала связи, файл доставляемый в это время будет доставлен не полностью, в таком положении он и останется на FTP сервере УФК, СУФД УФК такой файл попробует обработать, но неуспешно потому что он окажется битым. При восстановлении канала связи этот файл успешно будет доставлен на FTP сервер УФК повторно, СУФД УФК в этом случае обработает его
91;спешно. Ситуация в целом не критичная, но создаст некоторый "мусор" в СУФД УФК.
Получить дистрибутив lftp можно здесь
P.S.:
Копируем у СУФД папку transformpackets со всем его содержимым, причем исходные файлы остаются на AIX, на всякий случай для разбора конфликтных ситуаций.
Подключаемся к серверу aXX00p01 с учётной записью passufd и паролем password_passufd выполняем сценарий С:\ftas01\lftp\transformpackets.conf c периодичностью в 5 минут.
Создаем зеркало папки transformpackets со всеми подпапками полностью сохраняя иерархию по следующему пути Z:\PROD
Переносим банковские выписки с локального каталога на AIX и забираем исходящие с AIXa
Подключаемся к серверу aXX00p04 с учётной записью pdboebs и паролем password_pdboebs выполняем сценарий С:\ftas01\lftp\allbanks.conf c периодичностью в 5 минут.
В первой строке мы забираем (с удалением) выписки с AIX в локальный каталог C:\SUFD\bankout
Во второй строке мы переносим выписки с локального каталога (с последующим удалением) из каталога С:\SUFD\bank на AIX в каталог /ftas01/prod/oebs/temp/IN/BANKS/044442001
В УФК установлен и настроен FTP сервер, с ним и предполагается работать, для работы с ним необходимо выбрать программное обеспечение способное осуществлять автоматическую доставку данных на ftp сервер и их получение с него.
В качестве такой программы предлагаю использовать универсальный ftp-клиент LFTP. Неомного о нём из wikipedia:
lftp — консольный FTP-клиент для UNIX и UNIX-подобных операционных систем. Программа написана Александром Лукьяновым и распространяется по лицензии GNU GPL.
Кроме FTP программа также поддерживает протоколы FTPS, HTTP, HTTPS, HFTP, FISH и SFTP, используемый протокол автоматически определяется из URL-ссылки. Одно из достоинств программы Lftp - поддержка протокола FXP: передачи данных между двумя FTP-серверами без участия компьютера клиента.
С помощью команды torrent можно задействовать BitTorrent-клиент.
Lftp относится к мощ 085;ым FTP-клиентам, он имеет такие фукнции как рекурсивное зеркальное копирование дерева каталогов, автоматическое возобновление прервавшейся загрузки или приостановка вручную, выставление закладок для файлов и каталогов, и многое другое. Загрузка файлов в назначенное время, ограничение скорости загрузки, очереди загрузки. Контроль процесса загрузки в UNIX-подобной командной оболочке, либо автоматизация процесса скриптами.
Что мы имеем? Консольный открытый и бесплатный ftp-клиент пришедший к нам из мира *NIX. В данном случае будем использовать клиент специально скомпилированный под WINDOWS.
Для удобства работы в файле C:\WINDOWS\system32\drivers\etc\hosts обозначим FTP сервер УФК как ftpufk
10.XX.6.2 ftpufk
Для работы с lftp необходимо скачать его дистрибутив, он представляет из себя исполняемый файл lftp.exe и библиотеки в к нему, дистрибутив не требует инсталяции с сразу готов к работе. Дистрибутив необходимо разместить по следующему пути C:\ftas01\prod\lftp причем в папке lftp должны лежать библиотеки и исполняемый файл lftp.exe
Настройка lftp
Схему работы организуем в два потока для обеспечения распараллеливания процессов получения и отправки. Для обеспечения наилучшего восприятия и удобочитаемости вынесем эти два процесса в отдельные исполняемые скрипты.
Исходные данные
При авторизации на FTP сервере будут расположены следующие папки:
9500.4700 - входящая папка УФК (сюда необходимо отправлять свои исходящие данные)
9500.4700.47XX - исходящая папка УФК (отсюда необходимо получать данные для своего ОФК, где XX - номер Вашего отделения)
В ОФК на сервере СУФД мы имеем следующее расположение папок:
C:\ftas01\prod\sufd\exchange\9500.4700 - исходящая папка ОФК, данные из этой папки необходимо доставить на ftp сервер УФК ftp://47XX:47XX@ftpufk/9500.4700
C:\ftas01\prod\sufd\exchange\9500.4700\9500.4700.47XX - входящая папка ОФК, сюда необходимо складывать все входящие данные в том числе и из папки 9500.4700.47XX на FTP сервере УФК ftp://47XX:47XX@ftpufk/9500.4700.47XX
Получение данных
Для получения данных с УФК используем следующую схему:
lftp получает данные с ftp сервера и складывает их в буфферную папку, после получения всех данных скрипт перекладывает данные из буферной папки во входящую папку СУФД C:\ftas01\prod\sufd\exchange\9500.4700\9500.4700.47XX
Для реализации такой l9;хемы необходимо создать:
Каталог C:\ftas01\prod\lftp\9500.4700.47XX
Файл download.bat
В файл download.bat необходимо внести следующее:
:1
lftp -u 47XX,47XX -e 'lcd /cygdrive/c/ftas01/prod/lftp/9500.4700.47XX;mget -E /9500.4700.47XX/*.*;sleep 3m;bye' ftpufk
move C:\ftas01\prod\lftp\9500.4700.47XX\*.shipment C:\ftas01\prod\sufd\exchange\9500.4700.47XX\
move C:\ftas01\prod\lftp\9500.4700.47XX\*.revising C:\ftas01\prod\sufd\exchange\9500.4700.47XX\
goto 1
Где:
:1 и goto1 - бесконечный цикл
lftp -u 47XX,47XX -e 'lcd /cygdrive/c/ftas01/prod/lftp/9500.4700.47XX;mget -E /9500.4700.47XX/*.*;sleep 3m;bye' ftpufk
lftp -u 47XX,47XX -e '...' ftpufk - подкючение к FTP с учетной записью 47XX,47XX и выполнение произвольного сценария -e '...'
lcd /cygdrive/c/ftas01/prod/lftp/9500.4700.47XX - переход в каталог C:\ftas01\prod\lftp\9500.4700.47XX на локальной машине, так как программа изначально создавалась под *NIX системы обратите внимание на своеобразный способ указывания каталога.
mget -E /9500.4700.47XX/*.* - забирать файлы с FTP сервера из каталога 9500.4700.47XX по маске *.* при успешном завершении исходные файлы с ftp автоматически удаляются.
sleep 3m - задаём интервал в 3 минуты
bye - разрыв соединения с FTP сервером
move C:\ftas01\prod\lftp\9500.4700.47XX\*.shipment C:\ftas01\prod\sufd\exchange\9500.4700.47XX\ - переброска полученных данных из буфферной папки во входящу папку СУФД, выбрана строго определённая маска по типам файлов намеренно, чтоб исключить попадания в СУФД сторонних данных, например при использовании канала для переброски обновлений СУФД.
Доставка данных
Для доставки данных в УФК используем следующую схему:
Скрипт переносит данные подлежащие отправке из C:\ftas01\prod\sufd\exchange\9500.4700 в буфферную папку C:\ftas01\prod\lftp\9500.4700, lftp перемещает содержимое буферной папки на FTP сервер УФК в папку 9500.4700
Для реализации такой схемы необходимо создать:
Каталог C:\ftas01\prod\lftp\9500.4700
Файл upload.bat
В файл upload.bat необходимо внести следующее:
:1
move C:\ftas01\prod\sufd\exchange\9500.4700\*.shipment C:\ftas01\prod\lftp\9500.4700\
move C:\ftas01\prod\sufd\exchange\9500.4700\*.revising C:\ftas01\prod\lftp\9500.4700\
lftp -u 47XX,47XX -e 'lcd /cygdrive/c/ftas01/prod/lftp/9500.4700;cd 9500.4700;mput -E *.*;sleep 3m;bye' ftpufk
goto 1
Где:
:1 и goto1 - бесконечный цикл
lftp -u 47XX,47XX -e 'lcd /cygdrive/c/ftas01/prod/lftp/9500.4700;cd 9500.4700;mput -E *.*;sleep 3m;bye' ftpufk
lftp -u 47XX,47XX -e '...' ftpufk - подкючение к FTP с учетной записью 47XX,47XX и выполнение произвольного сценария -e '...'
lcd /cygdrive/c/ftas01/prod/lftp/9500.4700 - переход в каталог C:\ftas01\prod\lftp\9500.4700 на локальной машине, так как программа изначально создавалась под *NIX системы обратите внимание на своеобразный способ указывания каталога.
cd 9500.4700 - переход в каталог 9500.4700 на FTP сервере UFK
mput -E *.* - доставлять файлы на FTP сервер по маске *.* при успешном завершении доставки исходные файлы на локальной машине автоматически удаляются.
sleep 3m - задаём интервал в 3 минуты
bye - разрыв соединения с FTP сервером
Итог
Настройка закончена, настала пора всё это проверить в деле. Технология достаточно отработана, при разрыве канала связи данные будут докачены автоматически. Lftp сам по себе очень гибок и позволяет реализовывать очень интересные сценарии.
В предложеной схеме существует один потенциальный недостаток при отработке сценария описанный в файле upload.bat возможен обрыв канала связи, файл доставляемый в это время будет доставлен не полностью, в таком положении он и останется на FTP сервере УФК, СУФД УФК такой файл попробует обработать, но неуспешно потому что он окажется битым. При восстановлении канала связи этот файл успешно будет доставлен на FTP сервер УФК повторно, СУФД УФК в этом случае обработает его
91;спешно. Ситуация в целом не критичная, но создаст некоторый "мусор" в СУФД УФК.
Получить дистрибутив lftp можно здесь
P.S.:
Копируем у СУФД папку transformpackets со всем его содержимым, причем исходные файлы остаются на AIX, на всякий случай для разбора конфликтных ситуаций.
transformpackets.bat
lftp -u passufd,password_passufd -e 'repeat -d 5m source /cygdrive/c/ftas01/lftp/transformpackets.conf' aXX00p01
Подключаемся к серверу aXX00p01 с учётной записью passufd и паролем password_passufd выполняем сценарий С:\ftas01\lftp\transformpackets.conf c периодичностью в 5 минут.
transformpackets.conf
mirror --only-newer --verbose /../../ftas01/prod/sufd/stand/transformpackets /cygdrive/z/PROD;bye
Создаем зеркало папки transformpackets со всеми подпапками полностью сохраняя иерархию по следующему пути Z:\PROD
Переносим банковские выписки с локального каталога на AIX и забираем исходящие с AIXa
allbanks.bat
lftp -u pdboebs,pdboebs_password -e 'repeat -d 5m source /cygdrive/c/ftas01/lftp/allbanks.conf' aXX00p04
Подключаемся к серверу aXX00p04 с учётной записью pdboebs и паролем password_pdboebs выполняем сценарий С:\ftas01\lftp\allbanks.conf c периодичностью в 5 минут.
allbanks.conf
mirror --only-newer --verbose --Remove-source-files /../../ftas01/prod/oebs/temp/OUT /cygdrive/c/SUFD/bankout
mirror -R --only-newer --verbose --Remove-source-files /cygdrive/c/SUFD/bank /../../ftas01/prod/oebs/temp/IN/BANKS/044442001
В первой строке мы забираем (с удалением) выписки с AIX в локальный каталог C:\SUFD\bankout
Во второй строке мы переносим выписки с локального каталога (с последующим удалением) из каталога С:\SUFD\bank на AIX в каталог /ftas01/prod/oebs/temp/IN/BANKS/044442001
@echo off
ОтветитьУдалитьset kofk=4716
color 0e && Title FTP script`s %kofk% && prompt -
set kofk_c=9500.4700.%kofk%
set lftp_dir=C:\ftas01\prod\lftp\%kofk_c%\
set exch_dir=C:\ftas01\prod\sufd\exchange\%kofk_c%\
if not exist "%lftp_dir%nul" goto end
if not exist "%exch_dir%nul" goto end
set dir_1=/cygdrive/c/ftas01/prod/lftp/%kofk_c%
:run
lftp -u %kofk%,%kofk% -e 'lcd %dir_1%;mget -E /%kofk_c%/*.*;sleep 3m;bye' ftpufk
move %lftp_dir%*.shipment %exch_dir%
move %lftp_dir%*.revising %exch_dir%
goto run
:end
echo No direction "%lftp_dir%"
echo or "%exch_dir%"
pause > nul
А если вот так?
причем:
1) в скрипте нужно всего лиш раз ввести данные по коду офк остальное проставит сам скрипт
2) используются сим ссылки.
3) две строчки с move необязательно тк в этой папки по сути должны лежать только шипманты и ревизии а значит можно одну с *.* или тупо *
4) скрипт проверяет существование директорий C:\ftas01\prod\sufd\exchange\9500.4700.47XX и C:\ftas01\prod\lftp\9500.4700
5) не выводит на экран что нам не нужно @echo off
6) дополнение color 0e && Title FTP script`s %kofk% && prompt - устанавливает стиль форматирования
также моно сделать вывод в лог файл допустим так lftp -u %kofk%,%kofk% -e 'lcd %dir_1%;mget -E /%kofk_c%/*.*;sleep 3m;bye' ftpufk >> c:\log.txt где c:\log.txt место куда будет сохранятся лог закачки... поидеи долно сработать скрипт не проверял тк не имею lftp на руках
Спасибо за предложенное готовое решение, Ваш скрипт я проверил, он работает. Единственный момент пришлось убрать значение nul из проверки существования каталогов обмена.
ОтветитьУдалитьНасчёт предложенного логирования, такой метод работает.
Предлагаю заменить строку: lftp -u %kofk%,%kofk% -e 'lcd %dir_1%;mget -E /%kofk_c%/*.*;sleep 3m;bye' ftpufk
на : lftp -u %kofk%,%kofk% -e "mirror --verbose=3 --Remove-source-files --continue --log=/cygdrive/c/log.txt /%kofk_c% %dir_1%;sleep 1m;bye" ftpufk
Механизм зеркалирования данных с фтп, какие здесь плюсы?
1. Возможность организации одновременной загрузки нескольких файлов, ключ: -P, --parallel[=N] download N files in parallel
2. Возможность писать лог штатными средствами lftp, ключ --log=FILE write lftp commands being executed to FILE
Пройдусь по остальным ключам:
--verbose=3 - уровень логирования (вывода на экран оталодочной информации)
Verbosity level can be selected using --verbose=level option or by several -v options, e.g. -vvv. Levels are:
0 - no output (default)
1 - print actions
2 - +print not deleted file names (when -e is not specified)
3 - +print directory names which are mirrored
--Remove-source-files - удаление файлов с фтп после их гарантированной закачки
--continue - продолжение закачки с места остановки после потери связи, если это возможно.
P.S. Ссылка на дистрибутив есть в самой статье "Получить дистрибутив lftp можно здесь"
ОтветитьУдалитьhttps://docs.google.com/leaf?id=0B6sq7Sp7O0HlN2E0ODdjNTQtMzY1Ni00MzA5LThhYTYtNWRlMTg5MDhlMDFl&hl=ru
https://saglamproxy.com
ОтветитьУдалитьmetin2 proxy
proxy satın al
knight online proxy
mobil proxy satın al
01J