mirror of
https://github.com/gaoyifan/china-operator-ip.git
synced 2025-12-16 06:13:15 +08:00
Update justfile to adapt bgptools v0.2.4, supporting multiple RIBs for more comprehensive result.(#55)
This commit is contained in:
74
justfile
74
justfile
@@ -1,6 +1,6 @@
|
|||||||
set unstable
|
set unstable
|
||||||
set script-interpreter := ['bash']
|
set script-interpreter := ['bash']
|
||||||
bgptools_version := "0.2.3"
|
bgptools_version := "0.2.4"
|
||||||
|
|
||||||
default: prepare all stat
|
default: prepare all stat
|
||||||
|
|
||||||
@@ -30,47 +30,41 @@ prepare_autnums:
|
|||||||
rm -f autnums.html
|
rm -f autnums.html
|
||||||
echo "INFO> asnames.txt updated ($(wc -l < asnames.txt) entries)" >&2
|
echo "INFO> asnames.txt updated ($(wc -l < asnames.txt) entries)" >&2
|
||||||
|
|
||||||
[doc('Download the latest IPv4 RIB snapshot')]
|
[doc('Download the latest RIB snapshot for a collector')]
|
||||||
[script]
|
[script]
|
||||||
prepare_rib_v4:
|
prepare_rib collector:
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
url="$(bgpkit-broker latest -c rrc00 --json \
|
url="$(bgpkit-broker latest -c "{{collector}}" --json \
|
||||||
| jq -r '.[] | select(.data_type | contains("rib")) | .url' \
|
| jq -r '.[] | select(.data_type | contains("rib")) | .url' \
|
||||||
| head -n 1)"
|
| head -n 1)"
|
||||||
|
|
||||||
if [[ -z "${url}" ]]; then
|
if [[ -z "${url}" ]]; then
|
||||||
echo "Unable to determine IPv4 RIB download url" >&2
|
echo "Unable to determine {{collector}} RIB download url" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
rm -f rib.gz
|
if [[ "${url}" =~ (\.gz|\.bz2)$ ]]; then
|
||||||
axel -q -o rib.gz "${url}"
|
suffix="${BASH_REMATCH[1]}"
|
||||||
stat rib.gz
|
else
|
||||||
echo "INFO> rib.gz ready for bgptools" >&2
|
echo "Unsupported archive format for {{collector}}: ${url}" >&2
|
||||||
|
|
||||||
[doc('Download the latest IPv6 RIB snapshot')]
|
|
||||||
[script]
|
|
||||||
prepare_rib_v6:
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
url="$(bgpkit-broker latest -c route-views6 --json \
|
|
||||||
| jq -r '.[] | select(.data_type | contains("rib")) | .url' \
|
|
||||||
| head -n 1)"
|
|
||||||
|
|
||||||
if [[ -z "${url}" ]]; then
|
|
||||||
echo "Unable to determine IPv6 RIB download url" >&2
|
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
rm -f rib6.bz2
|
outfile="rib-{{collector}}${suffix}"
|
||||||
axel -q -o rib6.bz2 "${url}"
|
|
||||||
stat rib6.bz2
|
rm -f "${outfile}"
|
||||||
echo "INFO> rib6.bz2 ready for bgptools" >&2
|
axel -q -o "${outfile}" "${url}"
|
||||||
|
stat "${outfile}"
|
||||||
|
echo "INFO> ${outfile} ready for bgptools" >&2
|
||||||
|
|
||||||
|
[doc('Download the latest RIB snapshots (rrc21, rrc12, route-views6)')]
|
||||||
|
[parallel]
|
||||||
|
prepare_ribs: (prepare_rib "rrc00") (prepare_rib "rrc21") (prepare_rib "rrc12") (prepare_rib "route-views6")
|
||||||
|
|
||||||
[doc('Prepare data for generation')]
|
[doc('Prepare data for generation')]
|
||||||
[parallel]
|
[parallel]
|
||||||
prepare: prepare_autnums prepare_rib_v4 prepare_rib_v6
|
prepare: prepare_autnums prepare_ribs
|
||||||
|
|
||||||
[doc('Print ASN list for OPERATOR based on operator/*.conf')]
|
[doc('Print ASN list for OPERATOR based on operator/*.conf')]
|
||||||
[script]
|
[script]
|
||||||
@@ -100,7 +94,6 @@ get_asn operator:
|
|||||||
| awk '{gsub(/AS/, ""); print $1 }'
|
| awk '{gsub(/AS/, ""); print $1 }'
|
||||||
|
|
||||||
[doc('Generate IP lists for a single operator')]
|
[doc('Generate IP lists for a single operator')]
|
||||||
[parallel]
|
|
||||||
gen operator: (gen4 operator) (gen6 operator)
|
gen operator: (gen4 operator) (gen6 operator)
|
||||||
|
|
||||||
[script]
|
[script]
|
||||||
@@ -109,10 +102,21 @@ gen4 operator:
|
|||||||
|
|
||||||
mkdir -p result
|
mkdir -p result
|
||||||
|
|
||||||
|
RIB_FILES=()
|
||||||
|
for rib in rib-*.gz rib-*.bz2; do
|
||||||
|
[[ -f "${rib}" ]] || continue
|
||||||
|
RIB_FILES+=("--mrt-file" "${rib}")
|
||||||
|
done
|
||||||
|
|
||||||
|
if [[ ${#RIB_FILES[@]} -eq 0 ]]; then
|
||||||
|
echo "No rib-*.gz or rib-*.bz2 files found. Run 'just prepare_ribs' first." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
echo "INFO> generating IPv4 prefixes for {{operator}}" >&2
|
echo "INFO> generating IPv4 prefixes for {{operator}}" >&2
|
||||||
just get_asn "{{operator}}" \
|
just get_asn "{{operator}}" \
|
||||||
| tee >(awk 'END { if (NR == 0) exit 1 }') \
|
| tee >(awk 'END { if (NR == 0) exit 1 }') \
|
||||||
| xargs bgptools --ignore-private-asn --mrt-file rib.gz \
|
| xargs bgptools --ignore-private-asn --cache "${RIB_FILES[@]}" \
|
||||||
| grep -Fv ':' \
|
| grep -Fv ':' \
|
||||||
> "result/{{operator}}.txt"
|
> "result/{{operator}}.txt"
|
||||||
echo "INFO> {{operator}}.txt generated ($(wc -l < result/{{operator}}.txt) entries)" >&2
|
echo "INFO> {{operator}}.txt generated ($(wc -l < result/{{operator}}.txt) entries)" >&2
|
||||||
@@ -123,17 +127,27 @@ gen6 operator:
|
|||||||
|
|
||||||
mkdir -p result
|
mkdir -p result
|
||||||
|
|
||||||
|
RIB_FILES=()
|
||||||
|
for rib in rib-*.gz rib-*.bz2; do
|
||||||
|
[[ -f "${rib}" ]] || continue
|
||||||
|
RIB_FILES+=("--mrt-file" "${rib}")
|
||||||
|
done
|
||||||
|
|
||||||
|
if [[ ${#RIB_FILES[@]} -eq 0 ]]; then
|
||||||
|
echo "No rib-*.gz or rib-*.bz2 files found. Run 'just prepare_ribs' first." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
echo "INFO> generating IPv6 prefixes for {{operator}}" >&2
|
echo "INFO> generating IPv6 prefixes for {{operator}}" >&2
|
||||||
just get_asn "{{operator}}" \
|
just get_asn "{{operator}}" \
|
||||||
| tee >(awk 'END { if (NR == 0) exit 1 }') \
|
| tee >(awk 'END { if (NR == 0) exit 1 }') \
|
||||||
| xargs bgptools --ignore-private-asn --mrt-file rib6.bz2 \
|
| xargs bgptools --ignore-private-asn --cache "${RIB_FILES[@]}" \
|
||||||
| grep -v '^::/0$' \
|
| grep -v '^::/0$' \
|
||||||
| grep -F ':' \
|
| grep -F ':' \
|
||||||
> "result/{{operator}}6.txt" || true # ignore empty output, since drpeng has no IPv6 prefixes
|
> "result/{{operator}}6.txt" || true # ignore empty output, since drpeng has no IPv6 prefixes
|
||||||
echo "INFO> {{operator}}6.txt generated ($(wc -l < result/{{operator}}6.txt) entries)" >&2
|
echo "INFO> {{operator}}6.txt generated ($(wc -l < result/{{operator}}6.txt) entries)" >&2
|
||||||
|
|
||||||
[doc('Generate IP lists for all operators sequentially')]
|
[doc('Generate IP lists for all operators sequentially')]
|
||||||
[parallel]
|
|
||||||
all: (gen "china") (gen "cernet") (gen "chinanet") (gen "cmcc") (gen "unicom") (gen "cstnet") (gen "drpeng") (gen "googlecn")
|
all: (gen "china") (gen "cernet") (gen "chinanet") (gen "cmcc") (gen "unicom") (gen "cstnet") (gen "drpeng") (gen "googlecn")
|
||||||
|
|
||||||
[script]
|
[script]
|
||||||
|
|||||||
Reference in New Issue
Block a user