我想通过带有脚本的 FTP 下载 OpenBSD,并且我想从我附近的服务器下载它。所以我想选择一个“ping 延迟”低的镜像。我写了一个小脚本,效果很好(仅在 bash/Linux 下测试):
LATESTRELVER=`curl -s 'www.openbsd.org' | fgrep 'The current release is ' | sed 's/OpenBSD /\n/' | sed 's/<\/a>/\n/' | grep "^[0-9]" | head -1`
FASTESTSRV=`curl -s "http://www.openbsd.org/ftp.html#ftp" | fgrep '<a href="ftp://' | sed 's/"ftp:\/\//\n/' | cut -d "/" -f1 | fgrep -v '<a href=' | while read MIRRORSRVS; do ping -c 1 -w 1 $MIRRORSRVS 2>/dev/null | fgrep ' time=' | sed 's/ time=/\n/' | grep ' ms' | sed 's/ ms$/ /' | sed 's/\./ |/' | cut -d "|" -f1 | tr -d '\n'; if [ $? -eq 0 ]; then echo "$MIRRORSRVS"; fi; done | grep "^[0-9]" | sort -un | head -1 | awk '{print $2}'`
LATESTRELVERSHORT=`echo $LATESTRELVER | sed 's/\.//g'`
# NEEDEDARCH=i386
NEEDEDARCH=amd64
wget "$FASTESTSRV/pub/OpenBSD/$LATESTRELVER/$NEEDEDARCH/install$LATESTRELVERSHORT.iso" -O "install$LATESTRELVERSHORT-$NEEDEDARCH.iso"
问:有人可以用 Perl 编写这个脚本吗? :P(有更小、更好的代码吗?)
这个脚本的主要目的例如:不使用国外的带宽。
答案1
选择合适镜子的最简单方法是网络选择。您可以使用该-s 3
选项告诉它选择 3 个最好的服务器。