From 20bf0ce0686309f6ec4af3fdc41cc29b794b1daf Mon Sep 17 00:00:00 2001 From: Ricky Zhou Date: Mon, 20 Jul 2009 00:26:56 -0400 Subject: [PATCH] Add checkMirrors script by davivercillo. --- scripts/checkMirrors/README | 4 +++ scripts/checkMirrors/checkMirrors.py | 53 ++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+) create mode 100644 scripts/checkMirrors/README create mode 100644 scripts/checkMirrors/checkMirrors.py diff --git a/scripts/checkMirrors/README b/scripts/checkMirrors/README new file mode 100644 index 0000000..77d3782 --- /dev/null +++ b/scripts/checkMirrors/README @@ -0,0 +1,4 @@ +Mirror checking script by davivercillo +====================================== +Currently only checks the mirrors returned in the mirrorlist, perhaps add a +&country=global to try and get all mirrors back. diff --git a/scripts/checkMirrors/checkMirrors.py b/scripts/checkMirrors/checkMirrors.py new file mode 100644 index 0000000..f6552e2 --- /dev/null +++ b/scripts/checkMirrors/checkMirrors.py @@ -0,0 +1,53 @@ +#! /usr/bin/env python +# +# [Author] +# Davi Vercillo C. Garcia (davivercillo@gmail.com) +# +# [License] +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# + +import sys +import urllib + +if len(sys.argv) < 4: + print "Use: ./mirror_checker.py updates 11 x86_64" + sys.exit(-1) + +main_mirror = "http://download.fedora.redhat.com/pub/fedora/linux/%s/%s/%s/repodata/" +mirror_list = "http://mirrors.fedoraproject.org/mirrorlist?path=/pub/fedora/linux/%s/%s/%s/repodata" +xml_file = "repomd.xml" + +directory = sys.argv[1] +version = sys.argv[2] +architecture = sys.argv[3] + +try: + mirrors = urllib.urlopen(mirror_list % (directory, version, architecture)).read().split("\n") + repomd = urllib.urlopen(main_mirror % (directory, version, architecture) + xml_file).read() +except Exception, err: + print "[ERROR] Cannot get info from URLs. Please check the parameters." + sys.exit(-1) + +print "\nUsing:", main_mirror % (directory, version, architecture), "\n" +for url in mirrors: + if "#" in url or not url: + continue + if urllib.urlopen(url + xml_file).read() == repomd: + print url, "[Good]" + else: + print url, "[Bad]" +print "\n" +sys.exit(0)