testnet-ripe-anchors.py
is a Python-script that checks network connectivity by contacting a random subset of RIPE Atlas Anchors.
It is inspired by a blog post at RIPE labs.
To test connectivity, it tries to send a HTTP request to a set of RIPE Atlas Anchors.
Note: If you get an error about being unable to import the requests-library, you will need to install it. See the section about dependencies below.
To test connectivity to 5% of the RIPE Atlas Anchors, run:
$ ./testnet-ripe-anchors.py
14 / 14 OK
If you only have IPv4 connectivity, you may want to run:
$ ./testnet-ripe-anchors.py --ipv4
7 / 7 OK
There are a number of options to control the behavior of this program.
To see a full list of options, run ./testnet-ripe-anchors.py --help
Try to connect to all available targets.
Example:
$ ./testnet-ripe-anchors.py --all
294 / 298 OK
Number of targets to test against.
This can either be an absolute number, or a percentage of available targets. For example, to test against 30 targets:
$ ./testnet-ripe-anchors.py --count=30
30 / 30 OK
To test against 10% of available targets:
$ ./testnet-ripe-anchors.py --count=10%
29 / 29 OK
Failure threshold. Exit with an error status if less than this number of targets respond. This can be specified as both a percentage and as an absolute value.
Example using an absolute value:
$ ./testnet-ripe-anchors.py --count=50 --fail-threshold=40
35 / 50 OK
$ echo $?
1
Or using a percentage:
$ ./testnet-ripe-anchors.py --count=50 --fail-threshold=75%
35 / 50 OK
$ echo $?
1
Test only IPv4 targets.
Example:
$ ./testnet-ripe-anchors.py --all --ipv4
148 / 149 OK
Test only IPv6 targets.
Example:
$ ./testnet-ripe-anchors.py --all --ipv6
147 / 149 OK
Output format for presenting the output.
The following output formats are available:
A simple count of the number of targets reached.
This is most useful when used together with the --count
option:
$ ./testnet-ripe-anchors.py --count=50 --output=count
48
Print the number of targets reached and the number of targets tried, as two numbers on one line:
$ ./testnet-ripe-anchors.py --output=count_total
13 14
Or in a shell script:
#!/bin/bash
set -e # Exit on error
./testnet-ripe-anchors.py --output=count_total | (
read OK TOTAL
echo "OK: $OK"
echo "Total: $TOTAL"
)
The percentage of test targets that we were able to reach:
$ ./testnet-ripe-anchors.py --output=percent
100.00
This is a human readable presentation of the result:
$ ./testnet-ripe-anchors.py --output=verbose
14 / 14 OK
To run this project, you need the requests library installed. On a relatively recent Linux distribution, you can use the requests-library included with your distro. For example, on Debian Jessie:
$ apt-get install python-requests
Note: The version of the requests library included in Debian Wheezy is too old to support tests using IPv6.
If you cannot use the version of requests that is included in your Linux distribution, you can install it in a Virtual Environment:
$ virtualenv testnet-ve
New python executable in testnet-ve/bin/python
Installing distribute.............................................................................................................................................................................................done.
Installing pip...............done.
$ ./testnet-ve/bin/pip install requests
Downloading/unpacking requests
Downloading requests-2.8.1.tar.gz (480Kb): 480Kb downloaded
Running setup.py egg_info for package requests
Installing collected packages: requests
Running setup.py install for requests
Successfully installed requests
Cleaning up...
$ ./testnet-ve/bin/python testnet-ripe-anchors.py
14 / 14 OK