Решил написать такой, чтобы рассмотреть, что есть на некоторых наших богатых 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 в сам скрипт, так и не понял...
Пробовал $() внутри ``, и наоборот, и по всякому..
Подписаться на:
Комментарии к сообщению (Atom)
Комментариев нет:
Отправить комментарий