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

registry.sh

Blame
  • registry.sh 1.82 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.*eth/ {print $2}' | cut -d / -f 1)
    port=9998
    conf_dir="/etc/registry"
    conf_file="$conf_dir/hosts"
    DIR=$(dirname $0)
    
    if [ ! -d $conf_dir ]
    then
        # Init
        mkdir $conf_dir
        ssh-keygen -P "" -f /root/.ssh/id_rsa
        touch $conf_file
    else
        # Clean
        $DIR/clean.sh
    fi
    
    while true
    do
        # Format mac name ip number_apt_upgrade debian_version primtux_version git_branch number_git_updates
        line=`netcat -l $IP $port`
        if [ $(echo "$line" | egrep -c "^([0-9a-f]{2}:?){6} .*$") -eq 1 ]
        then
            date=$(date +%Y%m%d)
            rIP=$(echo $line | cut -d ' ' -f 3)
            sline=$(echo $line | cut -d ' ' -f 1-2)
            mac=$(echo $line | cut -d ' ' -f 1)
            eline=$(echo $line | cut -d ' ' -f 4-)
            res=$(grep "$mac" $conf_file)
            if [ ! -z "$res" ]
            then
                # Update
                sed -i "/$mac/d" $conf_file
            fi
            echo "$date $line" >> $conf_file
        fi
    done