Skip to content
Snippets Groups Projects
Select Git revision
  • ae4e220bd975929b85e844e22d1a48edebe9254c
  • master default protected
  • eole-amon-ecole-2.8
  • 24-badpathinpostinstall
4 results

registry.sh

Blame
  • David Beniamine's avatar
    David Beniamine authored
    ae4e220b
    History
    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