пятница, 19 октября 2007 г.

Скрипт для скачки структуры ftp-сервера

Решил написать такой, чтобы рассмотреть, что есть на некоторых наших богатых ftp-серверах, без подключения..

Долго извращался с bash'ем, пока не дошел до переменной IFS :)

В общем вот скрипт:

get_listing:

#!/bin/bash
if [ "$1" == "" ]
then
echo "Usage: `basename $0` server"
exit
fi
server=$1
base=$PWD
IFS=$'\n'

function get_listing()
{
local prev_dir=$PWD
local url=
if [ "$1" != "" ]
then
url=$1
echo "Creating dir: $2"
mkdir "$2"
cd "$2"
fi
echo "Retreiving file list $url"
curl ftp://$server$url/ 2> /dev/null > listing
lst=`cat listing | grep "^d" | grep -v "\.$" | xargs -I'{}' $base/get_fname "{}"`
for f in $lst
do
get_listing "${url}/$f" "$f"
done
cd $prev_dir
}

get_listing


get_fname:

#!/bin/bash
echo `expr match "$1" '\\S*\\s*\\S*\\s*\\S*\\s*\\S*\\s*\\S*\\s*\\S*\\s*\\S*\\s*\\S*\\s*\(.*\)'`


Как засунуть get_fname в сам скрипт, так и не понял...
Пробовал $() внутри ``, и наоборот, и по всякому..

Комментариев нет: