41 lines
1 KiB
Bash
Executable file
41 lines
1 KiB
Bash
Executable file
#!/bin/sh
|
|
set -o errexit
|
|
set -o nounset
|
|
|
|
URL='https://standards-oui.ieee.org/oui/oui.csv'
|
|
DATA='oui.csv'
|
|
SPEC='arpwatch.spec'
|
|
|
|
cd "$(dirname "$0")"
|
|
|
|
echo "==> Fetching ${URL}..." 1>&2
|
|
newfile="$(mktemp out.csv.XXXXXXXXXX)"
|
|
# shellcheck disable=SC2064
|
|
trap "rm -f '${newfile}'" INT TERM EXIT
|
|
chmod 0644 "${newfile}"
|
|
curl --output "${newfile}" "${URL}"
|
|
|
|
echo '==> Comparing data...' 1>&2
|
|
newhash="$(sha256sum < "${newfile}")"
|
|
oldhash="$(sha256sum < "${DATA}")"
|
|
if [ "${newhash}" = "${oldhash}" ]
|
|
then
|
|
echo '==> Local file is up to date' 1>&2
|
|
exit 0
|
|
fi
|
|
|
|
env TZ=UTC stat --format='Old file %s bytes, modified %y' "${DATA}"
|
|
env TZ=UTC stat --format='New file %s bytes, modified %y' "${newfile}"
|
|
mv "${newfile}" "${DATA}"
|
|
|
|
ISOMTIME="$(
|
|
env TZ=UTC date --iso-8601=seconds --date="$(stat --format='@%Y' "${DATA}")"
|
|
)"
|
|
sed -r -i 's/(oui\.csv last fetched )[^[:blank:]]+\./\1'"${ISOMTIME}./" "${SPEC}"
|
|
|
|
echo "==> Updated ${DATA}" 1>&2
|
|
|
|
git add "${DATA}"
|
|
fedpkg commit -m 'Generate ethercodes.dat from latest oui.csv'
|
|
|
|
# vim: set tw=78 ts=2 sw=2 sts=2 et ai cin nojs :
|