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

Пароль можно выбрать произвольным образом, однако удобно воспользоваться названием хоста и локальным идентификатором пользователя или электронным, адресом.

Приведенный ниже сценарий запрашивает следующую информацию:

   1. Адрес удаленного компьютера, с которым требуетця установить связь.

   2. Тип передаваемых файлов: двоичный или ASCII.

   3. Имя получаемого файла.

   4. Локальный каталог, в котором размещается выбранный файл.

Когда пользователь вводит наименование удаленного компьютера, с которым устанавливается соединение, для удаленного хоста выполняется команда ttaceroute. Таким образом, можно быть уверенным в том, что соединение действительно установлено. Если же результат выполнения команды traceroute был неудачным, сценарий отображает повторный запрос.

При нажатии клавиши [Return] по умолчанию принимается двоичный режим передачи файлов. После ввода имени загружаемого файла пользователя запрашивают о каталоге назначения для загружаемого файла. По умолчанию этим каталогом служит каталог /tmp. Если пользователь указывает другой каталог, который не может быть найден, используется каталог /tmp.

Именем загружаемого файла будет имя файла с присоединенным к нему расширением .ftp. И, наконец, после того как все эти варианты отображаются и подтверждаются, начинается процесс передачи файлов.

Ниже показано, как выглядят результаты выполнения сценария.

$ ftpauto

Enter the host you wish to access: uniware

Wait… seeing If uniware ls out there..

bumper can see unaware

What type of transfer / receive mode ?

   1. : Binary

   2. : ASCII

Your choice [1…2] [1] :

Enter the name of the file to retrieve :gnutar. Z Enter the directory where the file ls to be placed[/tmp] :

Host to connect ls: uniware

File to get ls : gnutar.Z

Mode to use ls : binary

File to be put in : /tmp/gnutar.Z.ftp

Ready to get file 'y' or 'q' to quit? [y..q] :

Далее приводится соответствующий сценарий.

$ pg ftpauto

#!/bin/sh

#сценарий ftp

#ftpauto

USER=`whoami`

MYDATE=`date +%d/%m/%Y`

THIS_HOST=`hostname -s`

tracelog=/tmp/tracelog.$$

while :

do

# бесконечный цикл

tput clear

cat << MAYDAY

User: $USER $MYDATE

This host: $THIS_HOST

FTP RETRIEVAL SCRIPT

Using the ID of anonymous

MAYDAY

echo -n "Enter the host you wish to access :"

read DEST_HOST

# введено ли имя хоста ???

if [ "$DEST_HOST"="" ]

then

echo "No destination host entered" >&2

exit 1

fi

# можно ли увидеть хост ???

echo "wait..seeing if $DEST_HOST is out there.."

# traceroute проверяет соединение

traceroute $DEST_HOST > $tracelog 2>&1

if grep "unknown host" $tracelog >/dev/null 2>&1; then

echo "Could not locate $DEST_HOST"

echo -n "Try another host? [y..n] :"

read ANS

case $ANS in

y|Y) ;;

*) break;; # выход из бесконечного цикла

esac else

echo "$THIS_HOST can see $DEST_HOST"

break # выход из бесконечного цикла

fi

done

# по умолчанию двоичный режим

echo "What type of transfer /receive mode ?"

echo " 1 : Binary"

echo " 2 : ASCII"

echo -n -e "\fYour choice [1..2] [1]:"

read $TYPE

Перейти на страницу:

Похожие книги