Скрипт для скачки структуры 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 в сам скрипт, так и не понял... Пробовал $() внутри ``, и наоборот, и по всякому..

blog comments powered by Disqus