Select Git revision
registry.sh

David Beniamine authored
registry.sh 1.95 KiB
#!/bin/bash
# Copyright (C) 2018 Tetras Libre <Contact@Tetras-Libre.fr>
# Author: Beniamine, David <David.Beniamine@Tetras-Libre.fr>
#
# 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 3 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, see <http://www.gnu.org/licenses/>.
getip(){
awk '/^lease/{IP=$2} /hardware ethernet/{gsub(";","",$3);if($3 == "'$1'"){print IP}}' \
< /var/lib/dhcp/dhcpd.leases
}
IP=$(ip a | awk '/inet.*containers/ {print $2}' | cut -d / -f 1)
port=9998
conf_dir="/etc/registry"
conf_file="$conf_dir/hosts"
if [ ! -d $conf_dir ]
then
# Init
mkdir $conf_dir
ssh-keygen -P "" -f /root/.ssh/id_rsa
else
# Clean
while read line
do
if [ "$(echo $line | cut -d ' ' -f 1)" -gt "$(date -d '-6 month' +%Y%m%d)" ]
then
LINES="$LINES\n$(date +%Y%m%d) $(echo $line | cut -d ' ' -f 2-)"
fi
done < $conf_file
echo -e $LINES > $conf_file
fi
while true
do
line=`netcat -l $IP $port`
if [ $(echo "$line" | egrep -c "^([0-9a-f]{2}:?){6} .*$") -eq 1 ]
then
date=$(date +%Y%m%d)
res=$(grep "$line" $conf_file)
rIP=$(echo $line | cut -d ' ' -f 3)
line=$(echo $line | cut -d ' ' -f 1-2)
if [ ! -z "$res" ]
then
# Update
sed -i -e "s/^.*$line$/$date $line/" $conf_file
else
# Add
echo "$date $line" >> $conf_file
fi
cat /root/.ssh/id_rsa.pub | netcat $rIP $port
fi
done