ForeverYoung's blog » ftp/atom/ftp/?lang=ru2007-10-19T18:13:00ZAnton NovosyolovLinux, программирование и понемногу о разномblohgСкрипт для скачки структуры ftp-сервера/post/ftp-scrap/?lang=ru2007-10-19T18:13:00Z2007-10-19T18:13:00ZAnton Novosyolovanton.novosyolov@gmail.com<!-- date: 1192817580 -->
<!-- tags: gentoo,bash,ftp -->
<!-- aliases: 301:/2007/10/ftp_19.html/ -->
<p>Решил написать такой, чтобы рассмотреть, что есть на некоторых наших богатых ftp-серверах, без подключения..</p>
<!-- date: 1192817580 -->
<!-- tags: gentoo,bash,ftp -->
<!-- aliases: 301:/2007/10/ftp_19.html/ -->
<p>Решил написать такой, чтобы рассмотреть, что есть на некоторых наших богатых ftp-серверах, без подключения..</p>
<!-- read_more -->
<p>Долго извращался с bash'ем, пока не дошел до переменной IFS :)</p>
<p>В общем вот скрипт:</p>
<p><em>get_listing</em>:</p>
<pre class="brush: bash">
#!/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
</pre>
<p><em>get_fname</em>:</p>
<pre class="brush: bash">
#!/bin/bash
echo `expr match "$1" '\\S*\\s*\\S*\\s*\\S*\\s*\\S*\\s*\\S*\\s*\\S*\\s*\\S*\\s*\\S*\\s*\(.*\)'`
</pre>
<p>Как засунуть <em>get_fname</em> в сам скрипт, так и не понял...
Пробовал $() внутри ``, и наоборот, и по всякому..</p>
<script type="text/javascript" src="http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js"></script>
<script type="text/javascript" src="http://alexgorbatchev.com/pub/sh/current/scripts/shBrushBash.js"></script>
<script type="text/javascript" src="http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPlain.js"></script>
<script type="text/javascript" src="http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPhp.js"></script>
<link type="text/css" rel="stylesheet" href="http://alexgorbatchev.com/pub/sh/current/styles/shCoreDefault.css"/>
<script type="text/javascript">SyntaxHighlighter.defaults.toolbar=false; SyntaxHighlighter.all();</script>