summaryrefslogtreecommitdiffstats
path: root/bin/check-mirrors
blob: 82af8648ef750a50b8c72f9e445e2873b64c7db3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#!/bin/sh
#
# Copyright (c) 2013 Nagios Plugins Development Team
#
# Originally written by Holger Weiss <holger@zedat.fu-berlin.de>.
#
# This file is free software; the Nagios Plugins Development Team gives
# unlimited permission to copy and/or distribute it, with or without
# modifications, as long as this notice is preserved.
#
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY, to the extent permitted by law; without even the implied
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

mirrors='
    ftp://ftp.fu-berlin.de/unix/network/nagios-plugins/
    ftp://ftp.lysator.liu.se/pub/nagios-plugins/
    ftp://mirror.mephi.ru/nagios-plugins/
    ftp://mirrors.ustc.edu.cn/nagios-plugins/
'
#
# Our mirrors:
#
# GERMANY
#
#   URLs:
#   - ftp://ftp.fu-berlin.de/unix/network/nagios-plugins/
#
#   Features:
#   - IPv4
#   - 10 GBit/s
#   - Updated four times a day
#
#   Contacts:
#   - Mirror Admins <ftp AT fu-berlin.de>
#   - Holger Weiss <holger AT zedat.fu-berlin.de>
#
#   Home page:
#   - http://www.fu-berlin.de/en/
#
# SWEDEN
#
#   URLs:
#   - ftp://ftp.lysator.liu.se/pub/nagios-plugins/
#   - http://ftp.lysator.liu.se/pub/nagios-plugins/
#   - https://ftp.lysator.liu.se/pub/nagios-plugins/
#   - rsync://ftp.lysator.liu.se/pub/nagios-plugins/
#
#   Features:
#   - IPv4
#   - IPv6
#   - 1 GBit/s
#   - Updated three times a day
#
#   Contacts:
#   - Mirror Admins <ftp-master AT lysator.liu.se>
#   - Niclas Zeising <zeising AT lysator.liu.se>
#
#   Home page:
#   - http://www.lysator.liu.se/english.html
#
# RUSSIA
#
#   URLs:
#   - ftp://mirror.mephi.ru/nagios-plugins/
#   - http://mirror.mephi.ru/nagios-plugins/
#   - rsync://mirror.mephi.ru/nagios-plugins/
#
#   Features:
#   - IPv4
#   - Updated twice a day
#
#   Contacts:
#   - Mirror Admins <mirror-private AT ut.mephi.ru>
#   - Andrew Savchenko <bircoph AT ut.mephi.ru>
#   - Dmitry Okunev <dyokunev AT ut.mephi.ru>
#
#   Home page:
#   - http://eng.mephi.ru/
#
# CHINA
#
#   URLs:
#   - ftp://mirrors.ustc.edu.cn/nagios-plugins/
#   - http://mirrors.ustc.edu.cn/nagios-plugins/
#   - rsync://mirrors.ustc.edu.cn/nagios-plugins/
#
#   Features:
#   - IPv4
#   - IPv6
#   - Updated twice a day
#
#   Contacts:
#   - Mirror Admins <lug AT ustc.edu.cn>
#   - Roy Zhang <pudh4418 AT gmail.com>
#
#   Home page:
#   - http://lug.ustc.edu.cn/
#

set -e
set -u
umask 022

export PATH='/usr/local/bin:/usr/local/sbin:/bin:/sbin:/usr/bin:/usr/sbin'

prefix='/home/plugins'
myself=${0##*/}
download_dir="$prefix/web/download"
temp_dir=$(mktemp -d "/tmp/$myself.XXXXXX")

trap 'rm -rf "$temp_dir"' EXIT

cd "$temp_dir"
date -d 'yesterday' '+%F' >'expected'
for mirror in $mirrors
do
	url="${mirror%/}/timestamp"

	if curl -s -S -O -m 600 --ftp-method 'nocwd' "$url" >'curl.log' 2>&1
	then
		cmp -s 'expected' 'timestamp' \
		    || echo >&2 "$mirror is outdated ($(cat 'timestamp'))."
	else
		echo >&2 "Cannot fetch $url: $(cat 'curl.log')"
	fi
done
cd "$OLDPWD"
date '+%F' >"$download_dir/timestamp"