процесс из-за сложности изучения программ TCP/IP и необходимости вручную вводить команды запускающие передачу файлов в ответ на приглашения ftp.

Наши люди ежедневно используют для передачи файлов между ПК и UNIX-серверами TCP/IP ftp. Поскольку одни и те же файлы (или, по крайней мере, файлы с похожими именами) передаются все время между одними и теми же DOS- и UNIX-компьютерами, пользователи просили меня подыскать более легкий путь выполнить эту задачу - например, автоматизировать раюоту при помощи шаблонов.

Я пробовал включать команды ftp в командные файлы Windows, называемые файлами информации о программах (program information file - .pif), но ничего пригодного для работы не получалось. Всякий раз, когда мой командный файл запрашивал соединение с Unix-машиной (посредством команды ftp XXX.XXX.XXX.XXX), соединение действительно устанавливалось, но затем командный файл "зависал". Я не мог найти работающую последовательность команд; я перепробовал все варианты шаблонов, но без успеха.

Наконец, я догадался использовать механизм переназначения DOS для того, чтобы направить последовательность команд из обычного текствого файла (который я называю сценарием) в команду ftp. Это сработало просто чудесно. Я был счастлив, что проблема разрешилась, а пользователи - благодарны мне за то, что они избавились от каждодневной тяжелой работы.

Вот как это работает:

1. Если ваши пользователи используют Windows вместе c программами TSR TCP/IP на базе DOS, проверьте, что TSR обеспечивают необходимые сервисы TCP/IP и загружаются перед вызовом Windows.

2. При помощи текстового редактора (например, DOS Edit или Windows Notepad) создайте текстовый файл, содержащий все ftp-команды, которые вы обычно набираете после запуска ftp - то есть все, что вы набираете после команды:

Drive:pathFTP 

Я сделал два ftp-сценария - один для выгрузки и один для загрузки - и назвал их DOWNLOAD.SCR и UPLOAD.SCR соответственно (расширение .scr - означает script, сценарий). Вот мой файл download.scr:

open 138.222.80.42
username
password
drive C:
lcd C:TEMPDOWNLOAD
cd /user/username
hash
prompt
ASCII
mget *.dat
bye

Введите все команды по одной на строке. Не включайте в ваши сценарии пустых строк, поскольку большинством версий ftp они будут интерпретироваться как CR/LF (возврат каретки/перевод строки), а не игнорироваться. Не включайте комментариев - они также будут восприниматься как команды. Используйте только строчные буквы, за исключением тех случаев, когда это требуется для обозначения имен каталогов в Unix; для некоторых версий ftp это существенно.

Приведенный мною сценарий использует команду HASH. В PCTCP компании FTP Software надо использовать команду HASH ON, чтобы обеспечить пользователям обратную связь; в таком случае после передачи каждых 512 или 1024 байт печатается значок "#" (это зависит от используемого варианта ftp). Команда PROMPT отключает всякий диалог и меня не спрашивают относительно всех и каждого файла *.DAT, хочу ли я его выгрузить; благодаря команде ASCII можно быть уверенным, что все файлы передаются именно как ASCII.

3. Сформируйте командный файл, вызывающий созданный сценарий. Я помещаю все свои командные файлы в C:BAT или в C:SYS (в зависимости от выбранного в данном подразделении стиля), либо централизованно на файловом сервере, например, в каталоге, отображенном на P:BAT. Командный файл должен содержать строку, которая вызывает FTP.EXE (или .COM), чтобы сделать следующую вещь:

FTP C:BATDOWNLOAD.SCR 

Возможно, вам захочется сделать процесс более наглядным для пользователя и предоставить ему информацию для устранения неисправностей. Например, листинг, приведенный на следующей странице, содержит файл DOWNLOAD.BAT, который я вызываю из Windows.

Сейчас я пользуюсь TCP/IP 1.2 компании 3Com, но тестирование предложенной процедуры с версиями 2.0 и 2.1, а также с PCTCP 2.2, 2.3 и 3.0 также было успешным. Она нормально работает с программами буквально всех производителей, поскольку все команды ftp вводятся только после того как запущен FTP, причем все операции осуществляются так, как это предусмотрено моими сценариями.

Я вызываю этот командный файл из Windows, а точнее, из DOS-сессии, которая запускается в рамках Windows. Команда pause в конце командного файла гарантирует, что пользователь увидит результат своей команды, прежде чем окно закроется. Я всегда использую полные имена файлов и поэтому не задумываюсь, что именно включено в список поиска в AUTOEXEC.BAT (в том числе, не беспокоюсь, что кто-то из пользователей может его удалить).

4. Наконец, пользуясь редактором Windows PIF, создайте оконный (или, если предпочитаете, полноэкранный) .PIF-файл, который вызывает сформированный вами командный файл. Я опрашивал элемент "Close Window on Exit", поэтому после завершения последней "паузы" в командном файле окно закрывается. Чтобы не усложнять жизнь, я назвал PIF-файл DOWNLOAD.PIF и поместил в тот же каталог, где хранятся файлы .BAT и .SCR.

Жизнь определенно стала легче с возникновением и распространением интерфейсов для ftp, напоминающих File Manager, но не каждый решится в одночасье обновить все в целой компании. Мое решение было реализовано еще в то время, когда когда единственным интерфейсом ftp был командный с простым приглашением FTP в командной строке DOS или окне Windows, напоминающем ASCII-терминал.


Перри Блэк, CEO, BLACK MAGIC SOFTWARE HESSHEIM, GERMANY CompuServe 100407,261

Поделитесь материалом с коллегами и друзьями