vm_s_laden_ihre_hw-infos_beim_start_in_die_db

VM's laden ihre HW-Infos beim Start in die DB

Damit man den Überblich über die eingesetzte HardWare behält, ist es sinnvoll, dass die openQRM-Client's sich beim Start vollkommen selbstständig mit ihren entsprechenden Daten in eine DB eintragen.

Dazu sind verschiedene Vorbereitungen nötig.

Archiv der Scripte und modifizierten PHP-Dateien

# tar tvf /root/openqrm_hw_cgibin.tar
-rwxr-xr-x root/root      5562 2010-07-28 10:56 opt/bin/hardwareinfos_von_local-openqrm2db.sh
-rwxr-xr-x root/root      2905 2010-07-23 18:50 usr/lib/cgi-bin/hwi2db.cgi
-rwxr-xr-x root/root      1723 2010-07-23 18:52 usr/lib/cgi-bin/store.cgi
-rw-r--r-- root/root       127 2010-07-16 11:11 var/www/store.php
-rw-r--r-- root/src       5126 2010-07-08 12:09 usr/src/openqrm/trunk/src/web/base/top.php
-rw-r--r-- root/root      5337 2010-07-27 14:34 usr/share/openqrm/web/base/top.php
-rw-r--r-- root/root      2842 2010-07-23 18:51 opt/bin/hwi2db.sh
-rw-r--r-- root/root      4871 2010-07-05 16:17 var/www/openqrm/base/server/appliance/appliance-hw_db.php
-rw-r--r-- root/root      3347 2010-04-28 13:00 var/www/openqrm/base/server/appliance/appliance-hw_akt.php
-rw-r--r-- root/root      3742 2010-06-29 14:26 usr/share/openqrm/web/boot-service/hardwareinfos_zum_server_schicken.sh
-rw-r--r-- root/root      2115 2010-07-27 17:15 opt/etc/hardwareinfos.cfg
-rwxr-xr-x root/root     14047 2010-07-28 10:53 usr/lib/cgi-bin/remconstab_aendern.cgi

Scripte und modifizierte PHP-Dateien

/usr/lib/cgi-bin/remconstab_aendern.cgi

#!/bin/sh

. /opt/etc/hardwareinfos.cfg

DATENDATEI="$(mktemp /tmp/remconstab.XXXXXXXXXXXX)"


### POST-Daten werden in eine Datei geschrieben
echo "$(dd bs=1 count=${CONTENT_LENGTH} 2> /dev/null | tr -s '&' '\n')" | tr -d '"' | awk '{print tolower($0)}' | sed -e 's#%3a#:#g' > ${DATENDATEI} 2>&1
. ${DATENDATEI}


### GET
AKTION="$(echo "${QUERY_STRING}" | awk -F'=' '{print $1}')"
WERT="$(echo "${QUERY_STRING}" | awk -F'=' '{print $2}')"


### Achtung!
# "action" englisch und klein geschrieben, ist die Variable aus dem POST-Datenstrom;
# "AKTION" deutsch und groß geschrieben, ist aus der GET-Zeile


echo 'Content-type: text/html

<link rel="stylesheet" type="text/css" href="/openqrm/base/css/htmlobject.css" />
<link rel="stylesheet" type="text/css" href="/cloud.css" />

<script type="text/javascript">
function currenttabToggle(id) {
document.getElementById(id).style.display = 'block';
document.getElementById('tab_' + id).className = 'current';
}
</script>
'


if [ "${AKTION}" = "anlegen" ] ; then

        echo '
        <div  class="htmlobject_tabs">
        <ul>
        <li id="tab_currenttabtab0" class="current"><span><a href="" onclick="this.blur();">IP-Adresse der Remote-Console</a></span></li>
        </ul>
        </div>
        <div style="line-height:0px;clear:both;">&#160;</div>

        <div class="htmlobject_tab_box" id="currenttabtab0"><style>
        .htmlobject_tab_box {
        }
        </style>
        <b><a href="/cgi-bin/remconstab_aendern.cgi">alle Remote IP-Adressen anzeigen</a></b>
        <br>
        <br>
        <h1><img border=0 src="/cloudipgroups.png">eine neue Remote IP-Adresse eintragen</h1>
        <br>
        <form action=/cgi-bin/remconstab_aendern.cgi method=post>
        

                                        <div class="htmlobject_box input" id="htmlobject_box_board_ip">
                                        <div class="left"><label for="p4c443ec95a81b">board_ip</label></div>
                                        <div class="right"><input title="Name" id="p4c443ec95a81b" maxlength="20" name="board_ip" value="[IP-Adresse]" type="text"></div>
                                        <div style="line-height:0px;height:0px;clear:both;" class="floatbreaker">&#160;</div>
                                        </div>
                                        <div class="htmlobject_box input" id="htmlobject_box_mac1">
                                        <div class="left"><label for="p4c443ec95a81b">mac1</label></div>
                                        <div class="right"><input title="Name" id="p4c443ec95a81b" maxlength="20" name="mac1" value="[MAC-Adresse]" type="text"></div>
                                        <div style="line-height:0px;height:0px;clear:both;" class="floatbreaker">&#160;</div>
                                        </div>
                                        

        <input type=hidden name="action" value="eintragen">
        <br>
        <input type=submit value="eintragen">
        <br>

        </form>
        <div style="line-height:0px;clear:both;">&#160;</div>
        </div>
        '

elif [ "${action}" = "eintragen" ] ; then

        ### der "action"-Eintrag wird entfernt
        sed -i -e 's/action=eintragen//' ${DATENDATEI}

        echo '
        <div  class="htmlobject_tabs">
        <ul>
        <li id="tab_currenttabtab0" class="current"><span><a href="" onclick="this.blur();">IP-Adresse der Remote-Console</a></span></li>
        </ul>
        </div>
        <div style="line-height:0px;clear:both;">&#160;</div>

        <div class="htmlobject_tab_box" id="currenttabtab0"><style>
        .htmlobject_tab_box {
        }
        </style>
        <b><a href="/cgi-bin/remconstab_aendern.cgi">alle IP-Adressen der Remote-Consolen anzeigen</a></b>
        <br>
        <br>
        '

        ### die neue Gruppe wird erstelt
        echo "INSERT INTO ${REMCONSTAB} ($(cat ${DATENDATEI}|awk -F'=' '{print $1}'|tr -s '\n' ','|sed 's/,$//')) VALUES ($(cat ${DATENDATEI} | awk -F'=' '{print $2}'|sed "s/.*/'&'/"|tr -s '\n' ','|sed "s/,'',$//"))" \
        | mysql -H -h ${OPENQRM_DATABASE_SERVER} -u${OPENQRM_DATABASE_USER} -p${OPENQRM_DATABASE_PASSWORD} ${OPENQRM_DATABASE_NAME}

        echo "
        SELECT *
        FROM ${REMCONSTAB}
        WHERE board_ip='${board_ip}'
        ;" \
        | mysql -H -h ${OPENQRM_DATABASE_SERVER} -u${OPENQRM_DATABASE_USER} -p${OPENQRM_DATABASE_PASSWORD} ${OPENQRM_DATABASE_NAME} \

elif [ "${AKTION}" = "aendern" ] ; then

        echo '
        <div  class="htmlobject_tabs">
        <ul>
        <li id="tab_currenttabtab0" class="current"><span><a href="" onclick="this.blur();">IP-Adresse der Remote-Console</a></span></li>
        </ul>
        </div>
        <div style="line-height:0px;clear:both;">&#160;</div>

        <div class="htmlobject_tab_box" id="currenttabtab0"><style>
        .htmlobject_tab_box {
        }
        </style>
        <b><a href="/cgi-bin/remconstab_aendern.cgi">alle IP-Adressen der Remote-Consolen anzeigen</a></b>
        <br>
        <br>
        '

        echo "
        <h1><img border=0 src='/cloudipgroups.png'>Datensatz zur IP-Adresse '${WERT}' &Auml;ndern</h1>
        <br>
        <form action=/cgi-bin/remconstab_aendern.cgi method=post>
        "

        echo "
        <input type=hidden name=\"board_ip\" value=\"${WERT}\">
        "

        echo "
        SELECT *
        FROM ${REMCONSTAB}
        WHERE board_ip='${WERT}'
        ;" \
        | mysql -t -h ${OPENQRM_DATABASE_SERVER} -u${OPENQRM_DATABASE_USER} -p${OPENQRM_DATABASE_PASSWORD} ${OPENQRM_DATABASE_NAME} \
        | egrep -v '[\+\|]---------' \
        | tr -s '\t' ' ' \
        | sed -e 's#| |#| "" |#g' -e 's#| |#| "" |#g' \
        | nl \
        | while read LFDNR ZEILE
        do
                if [ "${LFDNR}" = "1" ] ; then
                        KOPF="$(echo "${ZEILE}" | sed 's#|#\n#g' | egrep -v '^$' | awk '{print $1}')"
                else
                        DATEN="$(echo "${ZEILE}" | sed 's#|#\n#g' | egrep -v '^$' | awk '{print $1}')"
                        echo "${KOPF}" | nl | fgrep -v board_ip | while read SPALTENNR SPALTENNAME
                        do
                                SPALTENWERT="$(echo "${DATEN}" | head -n${SPALTENNR} | tail -n1 | tr -d '"')"
                                if [ "${SPALTENNAME}" = "board_ip" ] ; then
                                      echo "<input type=\"hidden\" name=\"${SPALTENNAME}\" value=\"${SPALTENWERT}\">"
                                else
                                        echo "
                                        <div class=\"htmlobject_box input\" id=\"htmlobject_box_${SPALTENNAME}\">
                                        <div class=\"left\"><label for=\"p4c443ec95a81b\">${SPALTENNAME}</label></div>
                                        <div class=\"right\"><input title=\"Name\" id=\"p4c443ec95a81b\" maxlength=\"20\" name=\"${SPALTENNAME}\" value=\"${SPALTENWERT}\" type=\"text\"></div>
                                        <div style=\"line-height:0px;height:0px;clear:both;\" class=\"floatbreaker\">&#160;</div>
                                        </div>
                                        "
                                fi
                        done
                fi
        done

        echo '
        <input type=hidden name="action" value="geaendert">
        <br>
        <input type=submit value="&auml;ndern">
        <br>
        </form>
        <div style="line-height:0px;clear:both;">&#160;</div>
        </div>
        '

elif [ "${action}" = "geaendert" ] ; then

        sed -i -e 's#action=geaendert##' ${DATENDATEI}
        echo '
        <div  class="htmlobject_tabs">
        <ul>
        <li id="tab_currenttabtab0" class="current"><span><a href="" onclick="this.blur();">IP-Adresse der Remote-Console</a></span></li>
        </ul>
        </div>
        <div style="line-height:0px;clear:both;">&#160;</div>

        <div class="htmlobject_tab_box" id="currenttabtab0"><style>
        .htmlobject_tab_box {
        }
        </style>
        <b><a href="/cgi-bin/remconstab_aendern.cgi">IP-Adressen der Remote-Consolen anzeigen</a></b>
        <br>
        '

        echo "UPDATE ${REMCONSTAB} SET $(cat ${DATENDATEI} | fgrep -v board_ip | sed -e "s#=#='#" -e "s#.*#&'#" -e "s#^'##" | tr -s '\n' ',' | sed -e 's#,$##') WHERE board_ip='${board_ip}';" \
        | mysql -H -h ${OPENQRM_DATABASE_SERVER} -u${OPENQRM_DATABASE_USER} -p${OPENQRM_DATABASE_PASSWORD} ${OPENQRM_DATABASE_NAME}
        echo "<BR>"
        echo "SELECT *  FROM ${REMCONSTAB} WHERE board_ip='${WERT}';" | mysql -H -h ${OPENQRM_DATABASE_SERVER} -u${OPENQRM_DATABASE_USER} -p${OPENQRM_DATABASE_PASSWORD} ${OPENQRM_DATABASE_NAME} \
        | tr -s '\n' ' ' \
        | sed -e 's#> <#><#g' -e 's#></#> </#g' -e 's#><#>\n<#g' -e 's#</TD> </TR>#</TD>\n</TR>#g' | while read HTMLZEILE
        do
                SPALTENANFANG="$(echo "${HTMLZEILE}" | egrep '^<TR>$')"

                if [ -n "${SPALTENANFANG}" ] ; then
                        SPALTENZAHL="0"
                fi
                SPALTENZAHL="$((${SPALTENZAHL}+1))"
                TH="$(echo "${HTMLZEILE}" | egrep '^<TH>')"

                if [ -z "${TH}" -a "${SPALTENZAHL}" = "2" ] ; then
                        ZELLENWERT="$(echo "${HTMLZEILE}" | sed -e 's#<TD>##' -e 's#</TD>##')"
                        echo "<TD>${ZELLENWERT} <a href=/cgi-bin/remconstab_aendern.cgi?loeschen=${ZELLENWERT}>loeschen</a> <a href=/cgi-bin/remconstab_aendern.cgi?aendern=${ZELLENWERT}>aendern</a></TD>"
                else
                        echo "${HTMLZEILE}"
                fi
        done

        echo "<BR><b>GE&Auml;NDERT<B><BR>"
        echo "SELECT * FROM ${REMCONSTAB} WHERE board_ip='${board_ip}';" | mysql -H -h ${OPENQRM_DATABASE_SERVER} -u${OPENQRM_DATABASE_USER} -p${OPENQRM_DATABASE_PASSWORD} ${OPENQRM_DATABASE_NAME}

elif [ "${AKTION}" = "loeschen" ] ; then

        echo '
        <div  class="htmlobject_tabs">
        <ul>
        <li id="tab_currenttabtab0" class="current"><span><a href="" onclick="this.blur();">Remote IP-Adresse gel&ouml;scht</a></span></li>
        </ul>
        </div>
        <div style="line-height:0px;clear:both;">&#160;</div>

        <div class="htmlobject_tab_box" id="currenttabtab0"><style>
        .htmlobject_tab_box {
        }
        </style>
        <b><a href="/cgi-bin/remconstab_aendern.cgi">alle Remote IP-Adressen anzeigen</a></b>
        <br>
        <br>
        '

        echo "<BR>"
        echo "SELECT * FROM ${REMCONSTAB} WHERE board_ip='${WERT}';" | mysql -H -h ${OPENQRM_DATABASE_SERVER} -u${OPENQRM_DATABASE_USER} -p${OPENQRM_DATABASE_PASSWORD} ${OPENQRM_DATABASE_NAME}
        echo "<b><a href="/cgi-bin/remconstab_aendern.cgi?geloescht=${WERT}">Remote IP-Adresse ${WERT} entg&uuml;ltig l&ouml;schen</a></b>"

elif [ "${AKTION}" = "geloescht" ] ; then

        echo '
        <div  class="htmlobject_tabs">
        <ul>
        <li id="tab_currenttabtab0" class="current"><span><a href="" onclick="this.blur();">Remote IP-Adresse gel&ouml;scht</a></span></li>
        </ul>
        </div>
        <div style="line-height:0px;clear:both;">&#160;</div>

        <div class="htmlobject_tab_box" id="currenttabtab0"><style>
        .htmlobject_tab_box {
        }
        </style>
        <b><a href="/cgi-bin/remconstab_aendern.cgi">alle Remote IP-Adressen anzeigen</a></b>
        <br>
        <br>
        '

        echo "SELECT * FROM ${REMCONSTAB} WHERE board_ip='${WERT}';" | mysql -H -h ${OPENQRM_DATABASE_SERVER} -u${OPENQRM_DATABASE_USER} -p${OPENQRM_DATABASE_PASSWORD} ${OPENQRM_DATABASE_NAME}
        echo "<BR>"
        echo "DELETE FROM ${REMCONSTAB} WHERE board_ip='${WERT}';" | mysql -H -h ${OPENQRM_DATABASE_SERVER} -u${OPENQRM_DATABASE_USER} -p${OPENQRM_DATABASE_PASSWORD} ${OPENQRM_DATABASE_NAME}
        echo "<BR><b>GEL&Ouml;SCHT<B><BR>"
        echo "SELECT * FROM ${REMCONSTAB} WHERE board_ip='${WERT}';" | mysql -H -h ${OPENQRM_DATABASE_SERVER} -u${OPENQRM_DATABASE_USER} -p${OPENQRM_DATABASE_PASSWORD} ${OPENQRM_DATABASE_NAME}

else

        echo '
        <div  class="htmlobject_tabs">
        <ul>
        <li id="tab_currenttabtab0" class="current"><span><a href="" onclick="this.blur();">IP-Adressen der Remote-Consolen</a></span></li>
        </ul>
        </div>
        <div style="line-height:0px;clear:both;">&#160;</div>
        <div class="htmlobject_tab_box" id="currenttabtab0"><style>
        .htmlobject_tab_box {
        }
        </style>
        <b><a href="/cgi-bin/remconstab_aendern.cgi?anlegen=neu">neue Remote IP-Adresse eintragen</a></b>
        <br>
        <br>
        '

        echo "
        SELECT *
        FROM ${REMCONSTAB}
        ORDER BY ${REMCONSORDER} ASC
        ;" \
        | mysql -H -h ${OPENQRM_DATABASE_SERVER} -u${OPENQRM_DATABASE_USER} -p${OPENQRM_DATABASE_PASSWORD} ${OPENQRM_DATABASE_NAME} \
        | tr -s '\n' ' ' \
        | sed -e 's#> <#><#g' -e 's#></#> </#g' -e 's#><#>\n<#g' -e 's#</TD> </TR>#</TD>\n</TR>#g' | while read HTMLZEILE
        do
                SPALTENANFANG="$(echo "${HTMLZEILE}" | egrep '^<TR>$')"

                if [ -n "${SPALTENANFANG}" ] ; then
                        SPALTENZAHL="0"
                fi
                SPALTENZAHL="$((${SPALTENZAHL}+1))"
                TH="$(echo "${HTMLZEILE}" | egrep '^<TH>')"

                if [ -z "${TH}" -a "${SPALTENZAHL}" = "2" ] ; then
                        ZELLENWERT="$(echo "${HTMLZEILE}" | sed -e 's#<TD>##' -e 's#</TD>##')"
                        echo "<TD><a href=/cgi-bin/remconstab_aendern.cgi?loeschen=${ZELLENWERT}>loeschen</a> <a href=/cgi-bin/remconstab_aendern.cgi?aendern=${ZELLENWERT}>aendern</a> ${ZELLENWERT}</TD>"
                else
                        echo "${HTMLZEILE}"
                fi
        done

fi


rm -f ${DATENDATEI} ${ZAHLEN1} ${ZAHLEN2}


echo "<BR>
<BR>
</div>
"

echo '
</body>
</html>
'

/opt/etc/hardwareinfos.cfg

. /usr/share/openqrm/etc/openqrm-server.conf

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HWINFOTAB="hardware"
REMCONSTAB="remconsole"
REMCONSORDER="INET_ATON(board_ip)"

#------------------------------------------------------------------------------#

################################################################################
# echo "DROP TABLE hardware;" | mysql -N -h localhost -uroot -p openqrm
# ./hardwareinfos2db.sh 192.168.3.70
# echo "SELECT * FROM hardware;" | mysql -h localhost -u root -p openqrm
# echo "SELECT hostname,bios_release_date,bios_product_name,mac,cpu_anzahl,bus,htt,cpu_family,cpu_manufacturer,cpu_signature FROM hardware;" | mysql -t -h localhost -u root -p openqrm
################################################################################

echo "
CREATE DATABASE IF NOT EXISTS ${OPENQRM_DATABASE_NAME};
USE ${OPENQRM_DATABASE_NAME};

CREATE TABLE IF NOT EXISTS ${REMCONSTAB} (
board_ip VARCHAR(16),
mac1 VARCHAR(18),
PRIMARY KEY (board_ip)
) TYPE=MyISAM;

CREATE TABLE IF NOT EXISTS ${HWINFOTAB} (
rem_cons_ip VARCHAR(16) default NULL,
timestamp DATETIME,
resource_id SMALLINT,
resource_ip VARCHAR(32) default NULL,
hostname VARCHAR(254) default NULL,
appliance_id SMALLINT,
ip4 VARCHAR(4096) default NULL,
mac VARCHAR(2048) default NULL,
netif VARCHAR(4096) default NULL,
bios_release_date VARCHAR(256) default NULL,
bios_manufacturer VARCHAR(256) default NULL,
bios_product_name VARCHAR(256) default NULL,
bios_serial_number VARCHAR(256) default NULL,
cpu_anzahl SMALLINT,
bus VARCHAR(8) default NULL,
vm VARCHAR(8) default NULL,
htt SMALLINT,
cpu_family VARCHAR(256) default NULL,
cpu_manufacturer VARCHAR(256) default NULL,
cpu_id VARCHAR(256) default NULL,
cpu_signature VARCHAR(256) default NULL,
cpu_core_count SMALLINT,
cpu_core_enabled SMALLINT,
memtotal VARCHAR(256) default NULL,
hdd VARCHAR(256) default NULL,
PRIMARY KEY (resource_id),
KEY (bios_serial_number),
KEY mac (mac)
) TYPE=MyISAM;
" | mysql -h ${OPENQRM_DATABASE_SERVER} -u${OPENQRM_DATABASE_USER} -p${OPENQRM_DATABASE_PASSWORD}

#------------------------------------------------------------------------------#

/opt/bin/hardwareinfos_von_local-openqrm2db.sh

#!/bin/bash

#------------------------------------------------------------------------------#
#
# 2010-04-14: erstellt
# 2010-04-28: modifiziert
#
#------------------------------------------------------------------------------#
### VARIABLEN werden gesammelt bzw. gesetzt

if [ -r /usr/share/openqrm/etc/openqrm-server.conf ] ; then

. /opt/etc/hardwareinfos.cfg

export $(echo "SELECT appliance_id FROM appliance_info,resource_info WHERE appliance_resources=resource_id AND resource_id="0" LIMIT 1;" | mysql -h ${OPENQRM_DATABASE_SERVER} -u${OPENQRM_DATABASE_USER} -p${OPENQRM_DATABASE_PASSWORD} ${OPENQRM_DATABASE_NAME} | tr -s '\n' '=' | sed 's/=$/\n/') #| awk -F'=' '{print $1"=\""$2"\""}')
export $(echo "SELECT resource_id FROM appliance_info,resource_info WHERE appliance_resources=resource_id AND resource_id="0" LIMIT 1;" | mysql -h ${OPENQRM_DATABASE_SERVER} -u${OPENQRM_DATABASE_USER} -p${OPENQRM_DATABASE_PASSWORD} ${OPENQRM_DATABASE_NAME} | tr -s '\n' '=' | sed 's/=$/\n/') #| awk -F'=' '{print $1"=\""$2"\""}')
export $(echo "SELECT resource_ip FROM appliance_info,resource_info WHERE appliance_resources=resource_id AND resource_id="0" LIMIT 1;" | mysql -h ${OPENQRM_DATABASE_SERVER} -u${OPENQRM_DATABASE_USER} -p${OPENQRM_DATABASE_PASSWORD} ${OPENQRM_DATABASE_NAME} | tr -s '\n' '=' | sed 's/=$/\n/') #| awk -F'=' '{print $1"=\""$2"\""}')

fi

if [ -r /var/openqrm/openqrm-resource.conf ] ; then

. /var/openqrm/openqrm-resource.conf

fi

HARDWAREINDEX="/var/tmp/$(cd /var/tmp/ && mktemp XXXXXXXXXXXXXXXX)"
DSPALTEN="/var/tmp/$(cd /var/tmp/ && mktemp XXXXXXXXXXXXXXXX)"
DWERTE="/var/tmp/$(cd /var/tmp/ && mktemp XXXXXXXXXXXXXXXX)"

#------------------------------------------------------------------------------#

PARAMETER="$(echo "$(
# TIMESTAMP
echo "timestamp=$(date +'%Y-%m-%d %H:%M:%S')"

# RESOURCEID
echo "resource_id=${resource_id}"

# RESOURCEIP
echo "resource_ip=${resource_ip}"

# Hostname
echo "hostname=$(hostname -f)"

# APPLIANCEID
echo "appliance_id=${appliance_id}"

# IP-Adressen
for i in $(ls /sys/class/net/ | egrep '.+[0-9]$');do ip -f inet addr show dev ${i} | egrep inet | egrep -v ':0$' | awk -v geraet=${i} '{print "IP4="geraet" "$2}';done

# MAC-Adressen
for i in $(find /sys/ -type f | fgrep 'address');do NETIF="$(echo "${i}"|awk -F'/' '{print $(NF-1)}')";cat ${i} | awk -v netif="${NETIF}" '{print "mac="netif,$1}';done

# Netzwerkgeschwindigkeiten
for i in $(ls /sys/class/net/ | egrep '.+[0-9]$');do ethtool ${i} | awk -v netif="${i}" '/[Ss]peed:/ {print "netif="netif,$NF}';done

# BIOS-Datum
dmidecode -t 0 | fgrep -i 'Release Date:' | sed -e 's/^[ \t]*/BIOS /' -e 's/: /=/'

# System-Infos
dmidecode -t 1 | egrep -i 'Manufacturer:|Product Name:|Serial Number:' | sed -e 's/^[ \t]*/BIOS /' -e 's/: /=/'

# Anzahl der CPUs
dmidecode -t processor | egrep -i 'Socket Designation:' | wc -l | awk '{print "CPU Anzahl="$1}'

# Bus: 64Bit oder nicht
egrep ^flags /proc/cpuinfo | tr -s ' ' '
' | egrep ^lm | uniq | awk '{print "bus="$1}'

# Hardwarevirtualisierung
egrep ^flags /proc/cpuinfo | tr -s ' ' '
' | egrep 'vmx|svm' | uniq | awk '{print "vm="$1}'

# Hyper-Threading oder nicht
awk -v alt='^$' -v neu='#' '{sub(alt, neu)} /physical id|core id|#/ && /0$|#/ {print $NF}' /proc/cpuinfo | uniq -c | awk '!/#|1 0/' | wc -l | awk '{$1 > 1 ; print "htt="$1}'

# CPU-Infos
dmidecode -t processor | sed -e '1,/^$/ d' -e '/^$/ q' -e 's/^        /CPU /' -e 's/^\t/CPU /' -e 's/: /=/' | egrep -i 'Family=|Manufacturer=|ID=|Signature=|Core Count=|Core Enabled='

# Hauptspeichergröße
egrep ^MemTotal /proc/meminfo | sed 's/:[ ]*/=/'

# Festplatten
fgrep -H 0 /sys/class/block/*/removable | egrep -v 'loop|ram|dm-' | awk -F'/' '{print $5}' | while read DEV;do echo "HDD=${DEV} $(cat /sys/class/block/${DEV}/size | awk -F'/' '{print $1/2048}') MB";done

)" | awk -F'=' '{wert=$2 ; gsub(" ", "_") ; variable=tolower($1) ; print variable"="wert}' | tr -d '"' | awk -F'=' '{print $1"=\""$2"\""}')"

. ${HARDWAREINDEX} 2>/dev/null
echo "${PARAMETER}" | tr -d '"' > ${HARDWAREINDEX}

#------------------------------------------------------------------------------#
# Tabelleninhalt nur ändern, wenn auch neue Daten da sind

if [ -s "${HARDWAREINDEX}" -a -n "${resource_id}" ] ; then

      #------------------------------------------------------------------------------#
      ### Hardwareinfos werden aufbereitet

      cat ${HARDWAREINDEX} | awk -F'=' '{print $1}' | sort | uniq | while read SPALTE
      do
              WERTE="$(cat ${HARDWAREINDEX} | fgrep "${SPALTE}=" | awk -F'=' '{print $2}' | tr -s '\n' '; ')"
              echo "${SPALTE}" >> ${DSPALTEN}
              echo "'${WERTE}'" >> ${DWERTE}
      done

      #------------------------------------------------------------------------------#
      ### Hardwareinfos werden in die DB geschrieben / ersetzt

      WHCL="$(echo "SELECT mac FROM ${HWINFOTAB} WHERE resource_id=${resource_id};" | mysql -N -h ${OPENQRM_DATABASE_SERVER} -u${OPENQRM_DATABASE_USER} -p${OPENQRM_DATABASE_PASSWORD} ${OPENQRM_DATABASE_NAME} | tail -n1 | tr ';' '\n' | egrep -v '^[ \t]*$|00:00:00:00:00:00|0x122100' | awk '{print $NF}' | sort | uniq | tr -s '\n' ';' | sed -e "s/;/' OR mac1='/g" -e "s/ OR mac1='$//" -e "s/.*/mac1='&/")"
      REMIP="'$(echo "SELECT board_ip FROM ${REMCONSTAB},${HWINFOTAB} WHERE ${WHCL} LIMIT 1;" | mysql -N -h ${OPENQRM_DATABASE_SERVER} -u${OPENQRM_DATABASE_USER} -p${OPENQRM_DATABASE_PASSWORD} ${OPENQRM_DATABASE_NAME})'"

      echo "DELETE FROM ${HWINFOTAB} WHERE resource_id=${resource_id}; INSERT INTO ${HWINFOTAB} (rem_cons_ip,$(cat ${DSPALTEN}|tr -s '\n' ','|sed 's/,$//')) VALUES (${REMIP},$(cat ${DWERTE}|tr -s '\n' ','|sed 's/,$//'))" | mysql -h ${OPENQRM_DATABASE_SERVER} -u${OPENQRM_DATABASE_USER} -p${OPENQRM_DATABASE_PASSWORD} ${OPENQRM_DATABASE_NAME}

fi

#------------------------------------------------------------------------------#
# zum Schluß löschen

#mv -f ${HARDWAREINDEX} /tmp/HARDWAREINDEX
#mv -f ${DSPALTEN} /tmp/SPALTEN
#mv -f ${DWERTE} /tmp/WERTE

rm -f ${HARDWAREINDEX} ${DSPALTEN} ${DWERTE}

/usr/lib/cgi-bin/hwi2db.cgi

#!/bin/sh

#------------------------------------------------------------------------------#
# Dieses Script wird von dem VM-Gast
# aufgerufen (hardwareinfos_zum_server_schicken.sh).
#
# 2010-04-14: erstellt
# 2010-04-26: modifiziert
#
#------------------------------------------------------------------------------#
### VARIABLEN werden gesammelt bzw. gesetzt

if [ -r /usr/share/openqrm/etc/openqrm-server.conf ] ; then
. /opt/etc/hardwareinfos.cfg
else
        exit
fi

HARDWAREINDEX="/var/tmp/$(cd /var/tmp/ && mktemp XXXXXXXXXXXXXXXX)"
DSPALTEN="/var/tmp/$(cd /var/tmp/ && mktemp XXXXXXXXXXXXXXXX)"
DWERTE="/var/tmp/$(cd /var/tmp/ && mktemp XXXXXXXXXXXXXXXX)"

#------------------------------------------------------------------------------#
### Hardwareinfos umgeformt

#HARDWAREINDEX="$(dd bs=1 count=${CONTENT_LENGTH} | sed 's/ *$//g' 2> /dev/null)"
#echo "${HARDWAREINDEX}" > ${HARDWAREINDEX}

dd bs=1 count=${CONTENT_LENGTH} | sed 's/ *$//g' > ${HARDWAREINDEX} 2> /dev/null

. ${HARDWAREINDEX} 2>/dev/null

#------------------------------------------------------------------------------#
# Tabelleninhalt nur ändern, wenn auch neue Daten da sind

if [ -s "${HARDWAREINDEX}" -a -n "${resource_id}" ] ; then

      #------------------------------------------------------------------------------#
      ### Hardwareinfos werden aufbereitet

      cat ${HARDWAREINDEX} | awk -F'=' '{print $1}' | sort | uniq | while read SPALTE
      do
              WERTE="$(cat ${HARDWAREINDEX} | fgrep "${SPALTE}=" | awk -F'=' '{print $2}' | tr -s '\n' '; ')"
              echo "${SPALTE}" >> ${DSPALTEN}
              echo "'${WERTE}'" >> ${DWERTE}
      done

      #------------------------------------------------------------------------------#
      ### Hardwareinfos werden in die DB geschrieben / ersetzt

      WHCL="$(echo "SELECT mac FROM ${HWINFOTAB} WHERE resource_id=${resource_id};" | mysql -N -h ${OPENQRM_DATABASE_SERVER} -u${OPENQRM_DATABASE_USER} -p${OPENQRM_DATABASE_PASSWORD} ${OPENQRM_DATABASE_NAME} | tail -n1 | tr ';' '\n' | egrep -v '^[ \t]*$|00:00:00:00:00:00|0x122100' | awk '{print $NF}' | sort | uniq | tr -s '\n' ';' | sed -e "s/;/' OR mac1='/g" -e "s/ OR mac1='$//" -e "s/.*/mac1='&/")"
      REMIP="'$(echo "SELECT board_ip FROM ${REMCONSTAB},${HWINFOTAB} WHERE ${WHCL} LIMIT 1;" | mysql -N -h ${OPENQRM_DATABASE_SERVER} -u${OPENQRM_DATABASE_USER} -p${OPENQRM_DATABASE_PASSWORD} ${OPENQRM_DATABASE_NAME})'"

      echo "DELETE FROM ${HWINFOTAB} WHERE resource_id=${resource_id}; INSERT INTO ${HWINFOTAB} (rem_cons_ip,$(cat ${DSPALTEN}|tr -s '\n' ','|sed 's/,$//')) VALUES (${REMIP},$(cat ${DWERTE}|tr -s '\n' ','|sed 's/,$//'))" | mysql -h ${OPENQRM_DATABASE_SERVER} -u${OPENQRM_DATABASE_USER} -p${OPENQRM_DATABASE_PASSWORD} ${OPENQRM_DATABASE_NAME}

fi

#------------------------------------------------------------------------------#
# zum Schluß löschen

#mv -f ${HARDWAREINDEX} /tmp/HARDWAREINDEX
#mv -f ${DSPALTEN} /tmp/SPALTEN
#mv -f ${DWERTE} /tmp/WERTE

rm -f ${HARDWAREINDEX} ${DSPALTEN} ${DWERTE}

/opt/bin/hwi2db.sh

#!/bin/sh

#------------------------------------------------------------------------------#
# Dieses Script wird von dem Script
# /usr/share/openqrm/web/base/server/appliance/appliance-info.php
# aufgerufen.
#
# 2010-04-14: erstellt
# 2010-04-27: modifiziert
#
#------------------------------------------------------------------------------#
### RESOURCEIP-Check

if [ -z "${2}" ] ; then
      echo "Sie müssen die Resource-ID des Zielrechners als Parameter mit übergeben!"
      echo "${0} [resource_id] [appliance_id]"
      exit 1
fi

#------------------------------------------------------------------------------#
### VARIABLEN werden gesammelt bzw. gesetzt

. /opt/etc/hardwareinfos.cfg

#------------------------------------------------------------------------------#
# Kommandodateien erstellen

TIMESTAMP="$(date +%s)"
TEMP1="$(cd /var/tmp/ && mktemp XXXXXXXXXXXXXXXXXXX)"
TEMP2="$(cd /var/tmp/ && mktemp XXXXXXXXXXXXXXXXXXX)"
CMD1="${OPENQRM_SERVER_BASE_DIR}/openqrm/var/spool/openqrm-queue.${TIMESTAMP}_1_${TEMP1}"
CMD2="${OPENQRM_SERVER_BASE_DIR}/openqrm/var/spool/openqrm-queue.${TIMESTAMP}_2_${TEMP2}"
chmod 0644 /var/tmp/${TEMP1} /var/tmp/${TEMP2}

# (/usr/share/openqrm/var/spool)
#------------------------------------------------------------------------------#
### hier wird mit Hilfe der "Resource ID" die "Resource IP" ermittelt

APPLIANCEID="${2}"
RESOURCEID="${1}"
RESOURCEIP="$(echo "SELECT resource_ip FROM resource_info WHERE resource_id='${RESOURCEID}' LIMIT 1;" | mysql -N -h ${OPENQRM_DATABASE_SERVER} -u${OPENQRM_DATABASE_USER} -p${OPENQRM_DATABASE_PASSWORD} ${OPENQRM_DATABASE_NAME})"


#echo "APPLIANCEID=${APPLIANCEID}"
#echo "RESOURCEID=${RESOURCEID}"
#echo "RESOURCEIP=${RESOURCEIP}"
#exit

#------------------------------------------------------------------------------#
### Nur weiter machen, wenn die Resource eine IP hat

if [ -z "${RESOURCEID}" ] ; then
      echo "Diese Resource hat keine ID!"
      exit 0
fi

if [ -z "${RESOURCEIP}" ] ; then
      echo "Diese Resource hat keine IP!"
      exit 0
fi

#------------------------------------------------------------------------------#
### Hardwareinfos werden gesammelt

# Script übertragen
echo "cat /usr/share/openqrm/web/boot-service/hardwareinfos_zum_server_schicken.sh | /usr/share/openqrm/bin/dbclient -K 10 -y -i /usr/share/openqrm/etc/dropbear/dropbear_rsa_host_key -p 1667 root@${RESOURCEIP} 'cat > hardwareinfos_zum_server_schicken.sh'" > ${CMD1}

# Script ausführen
echo "/usr/share/openqrm/bin/dbclient -K 10 -y -i /usr/share/openqrm/etc/dropbear/dropbear_rsa_host_key -p 1667 root@${RESOURCEIP} '/bin/bash hardwareinfos_zum_server_schicken.sh'" >> /var/tmp/${TEMP2}
sleep 1

mv -f /var/tmp/${TEMP2} ${CMD2}

#------------------------------------------------------------------------------#
rm -f /var/tmp/${TEMP1} /var/tmp/${TEMP2}

/usr/lib/cgi-bin/store.cgi

#!/bin/sh

. /usr/share/openqrm/etc/openqrm-server.conf

echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de" dir="ltr">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>
    openQRM Nutzung der Storages
  </title>
  <meta name="generator" content="openQRM Nutzung der Storages" />
</head>
<body>
'


ROOTDEVICES="$(echo "SELECT
image_rootdevice,
count(image_rootdevice)
FROM appliance_info,image_info,resource_info,storage_info WHERE
appliance_imageid=image_id
AND
image_storageid=storage_id
AND
appliance_resources=resource_id
GROUP BY image_rootdevice
;" \
| mysql -N -h ${OPENQRM_DATABASE_SERVER} -u${OPENQRM_DATABASE_USER} -p${OPENQRM_DATABASE_PASSWORD} ${OPENQRM_DATABASE_NAME} | while read image_rootdevice count_image_rootdevice
do
        if [ -n "${count_image_rootdevice}" -a -n "${image_rootdevice}" ] ; then
                if [ "${count_image_rootdevice}" -gt "1" ] ; then
                        echo "${image_rootdevice}"
                fi
        fi
done)"


if [ -n "${ROOTDEVICES}" ] ; then

echo "<BR>"
echo "<U><B>ACHTUNG!!!</B></U><BR>"
echo "<BR>"
echo "<U><B>diese "image_rootdevice"'s werden im Moment mehrfach verwendet:</B></U><BR>"
echo "<BR>"

for DROOTDEVICE in ${ROOTDEVICES}
do
echo "SELECT
appliance_id,
appliance_name,
appliance_state,
image_rootdevice,
image_id,
image_name,
resource_id,
resource_hostname
FROM appliance_info,image_info,resource_info,storage_info
WHERE
appliance_imageid=image_id
AND
image_storageid=storage_id
AND
appliance_resources=resource_id
AND
image_rootdevice='${DROOTDEVICE}'
ORDER BY appliance_id
;" \
| mysql -H -h ${OPENQRM_DATABASE_SERVER} -u${OPENQRM_DATABASE_USER} -p${OPENQRM_DATABASE_PASSWORD} ${OPENQRM_DATABASE_NAME} 2>&1
echo "<BR>"
echo "<BR>"
done
fi


echo "<U><B>sortiert nach image_rootdevice:</B></U><BR>"
echo "<BR>"

echo "SELECT
appliance_id,
appliance_name,
appliance_state,
image_rootdevice,
image_id,
image_name,
resource_id,
resource_hostname
FROM appliance_info,image_info,resource_info,storage_info
WHERE
appliance_imageid=image_id
AND
image_storageid=storage_id
AND
appliance_resources=resource_id
ORDER BY image_rootdevice
;" \
| mysql -H -h ${OPENQRM_DATABASE_SERVER} -u${OPENQRM_DATABASE_USER} -p${OPENQRM_DATABASE_PASSWORD} ${OPENQRM_DATABASE_NAME} 2>&1

#echo "<BR>"
#echo "<BR>"
#
#echo "SELECT
#appliance_id,
#appliance_name,
#appliance_virtualization,
#appliance_imageid,
#appliance_capabilities,
#appliance_resources,
#appliance_state,
#image_id,
#image_name,
#image_rootdevice,
#resource_id,
#resource_hostname,
#resource_imageid,
#resource_ip,
#resource_state,
#resource_vtype,
#resource_vhostid,
#storage_id,
#storage_name,
#storage_resource_id,
#storage_capabilities
#
#FROM appliance_info,image_info,resource_info,storage_info
#WHERE
#appliance_imageid=image_id
#AND
#image_storageid=storage_id
#AND
#appliance_resources=resource_id
#ORDER BY image_rootdevice
#;" \
#| mysql -H -h ${OPENQRM_DATABASE_SERVER} -u${OPENQRM_DATABASE_USER} -p${OPENQRM_DATABASE_PASSWORD} ${OPENQRM_DATABASE_NAME} 2>&1

# appliance_imageid=image_id
# image_storageid=storage_id
# appliance_resources=resource_id
# resource_imageid=image_id
# storage_resource_id=resource_id

echo "<BR>"
echo "<BR>"

#echo "SELECT image_id,image_name,image_version,image_type,image_rootdevice,image_rootfstype,image_storageid,storage_id,storage_name,storage_resource_id,storage_type FROM image_info,storage_info WHERE storage_id=image_storageid ;" | mysql -H -h ${OPENQRM_DATABASE_SERVER} -u${OPENQRM_DATABASE_USER} -p${OPENQRM_DATABASE_PASSWORD} ${OPENQRM_DATABASE_NAME} 2>&1

echo '
</body>
</html>
'

/var/www/store.php

<?php

$ausgabe = system("/bin/sh /usr/lib/cgi-bin/store.cgi", $retval);
echo "$ausgabe <br>";

echo "Fehler=$retval<br>";

?>

/var/www/openqrm/action/hardwareinfos_in_db_schreiben.php

<?php

$RootDir = $_SERVER["DOCUMENT_ROOT"].'/openqrm/base/';
require_once "$RootDir/include/openqrm-database-functions.php";
require_once "$RootDir/class/resource.class.php";
require_once "$RootDir/class/image.class.php";
require_once "$RootDir/class/image_authentication.class.php";
require_once "$RootDir/class/kernel.class.php";
require_once "$RootDir/class/plugin.class.php";
require_once "$RootDir/class/event.class.php";
require_once "$RootDir/class/openqrm_server.class.php";
global $RESOURCE_INFO_TABLE;

$resource_command = $_REQUEST["resource_command"];
$resource_id = $_REQUEST["resource_id"];
$resource_mac = $_REQUEST["resource_mac"];
$resource_ip = $_REQUEST["resource_ip"];
$resource_state = $_REQUEST["resource_state"];
$resource_event = $_REQUEST["resource_event"];
$resource_lastgood = $_SERVER['REQUEST_TIME'];
foreach ($_REQUEST as $key => $value) {
      if (strncmp($key, "resource_", 9) == 0) {
              $resource_fields[$key] = $value;
      }
}
unset($resource_fields["resource_command"]);
// set lastgood
$resource_fields["resource_lastgood"]=$resource_lastgood;

// gather for event vars
$event_name = $_REQUEST["event_name"];
$event_priority = $_REQUEST["event_priority"];
$event_source = $_REQUEST["event_source"];
$event_description = $_REQUEST["event_description"];

$openqrm_server = new openqrm_server();
$OPENQRM_SERVER_IP_ADDRESS=$openqrm_server->get_ip_address();
global $OPENQRM_SERVER_IP_ADDRESS;

$event = new event();

      switch ($resource_command) {

              // get_parameter requires :
              // resource_mac
              case 'get_parameter':
                      // if resource-id = -1 we add a new resource first
                      if ($resource_id == "-1") {
                              // check if resource already exists
                              $resource = new resource();
                              if (!$resource->exists($resource_mac)) {
                                      // add resource
                                      $new_resource_id=openqrm_db_get_free_id('resource_id', $RESOURCE_INFO_TABLE);
                                      $resource->id = $new_resource_id;
                                      //      check if resource_id is free
                                      if (!$resource->is_id_free($resource->id)) {
                                              $event->log("get_parameter", $_SERVER['REQUEST_TIME'], 3, "resource-monitor", "Given resource id $resource->id is already in use!", "", "", 0, 1, $resource->id);
                                              echo "Given resource id $resource->id is already in use!";
                                              exit();
                                      }
                                      $event->log("get_parameter", $_SERVER['REQUEST_TIME'], 5, "resource-monitor", "Adding new resource $new_resource_id ($resource_mac)", "", "", 0, 1, $resource->id);
                                      # send add resource to openQRM-server
                                      $openqrm_server->send_command("openqrm_server_add_resource $new_resource_id $resource_mac $resource_ip");
                                      # add resource to db
                                      $resource_fields["resource_id"]=$new_resource_id;
                                      $resource_fields["resource_localboot"]=0;
                    $resource_fields["resource_vtype"]=1;
                    $resource_fields["resource_vhostid"]=$new_resource_id;
                                      $resource->add($resource_fields);
                              }
                      }
                      if (strlen($resource_mac)) {
                              $resource = new resource();
                              $resource->get_instance_by_mac("$resource_mac");
                              // update the resource parameter in any way
                              $resource->update_info($resource->id, $resource_fields);
                              $resource->get_parameter($resource->id);
                      } else if (strlen($resource_id)) {
                              $resource = new resource();
                $resource->get_instance_by_id($resource_id);
                              // update the resource parameter in any way
                              $resource->update_info($resource->id, $resource_fields);
                              $resource->get_parameter($resource->id);
                      }
                      exit();
                      break;

              // update_info requires :
              // resource_id
              // array of resource_fields
              case 'update_info':
                      $resource = new resource();
                      if (strlen($resource_id)) {
                $resource->get_instance_by_id($resource_id);
                if (!strcmp($resource->event, "reboot")) {
                    // we do not accept this stats since the resource will be rebooted
                    // reset the events field
                    $resource_reboot_fields=array();
                    $resource_reboot_fields["resource_state"]="transition";
                    $resource_reboot_fields["resource_event"]="";
                    $event->log("update_info", $_SERVER['REQUEST_TIME'], 5, "resource-monitor", "Rejecting statistics from rebooting resource $resource_id", "", "", 0, 0, $resource_id);
                    $resource->update_info($resource_id, $resource_reboot_fields);
                } else {
                    $event->log("update_info", $_SERVER['REQUEST_TIME'], 5, "resource-monitor", "Processing statistics from resource $resource_id", "", "", 0, 0, $resource_id);
                    $resource->update_info($resource_id, $resource_fields);
                }
                      }
                      // in case the openQRM-server sends its stats we check
                      // the states of all resources
                      if ("$resource_id" == "0") {
                              $event->log("update_info", $_SERVER['REQUEST_TIME'], 5, "resource-monitor", "Checking states of all resources", "", "", 0, 0, 0);
                              $resource->check_all_states();

                              // check if there are any image_authentications to manage
                              $image_auth = new image_authentication();
                              $image_auth->check_all_image_authentication();

                              // here a plugin hook for things which needs to be done periodically
                              $plugin = new plugin();
                              $enabled_plugins = $plugin->enabled();
                              foreach ($enabled_plugins as $index => $plugin_name) {
                                      $plugin_monitor_hook = "$RootDir/plugins/$plugin_name/openqrm-$plugin_name-monitor-hook.php";
                                      if (file_exists($plugin_monitor_hook)) {
                                              $event->log("plugin_monitor_hook", $_SERVER['REQUEST_TIME'], 5, "resource-monitor.php", "Found plugin $plugin_name handling monitor event.", "", "", 0, 0, $resource_id);
                                              require_once "$plugin_monitor_hook";
                                              $monitor_function="openqrm_"."$plugin_name"."_monitor";
                                              $monitor_function=str_replace("-", "_", $monitor_function);
                                              $monitor_function();
                                      }
                              }

                      }
                      exit();
                      break;

              // update_status requires :
              // resource_id
              // resource_state
              // resource_event
              case 'update_status':
                      if (strlen($resource_id)) {
                              $resource = new resource();
                              $resource->update_status($resource_id, $resource_state, $resource_event);
                      }
                      exit();
                      break;

              // post_event requires :
              // resource_id
              // event_name
              // event_priority
              // event_source
              // event_description
              case 'post_event':
                      if (strlen($resource_id)) {
                              $event->log($event_name, $_SERVER['REQUEST_TIME'], $event_priority, $event_source, $event_description, "", "", 0, 0, 0);
                      }
                      exit();
                      break;

              default:
                      echo "No Such openQRM-command!";
                      break;
      }


?>

/var/www/openqrm/base/server/appliance/appliance-hw_db.php

HW-Infos aus der DB anzeigen

  <?php

#####################
#
# Class Query
# by OLIMAC
#
# 2010-04-21: modifiziert
#
#####################

#------------------------------------------------------------------------------#
# Konfiguration einlesen
#------------------------------------------------------------------------------#


Class Query {

      var $con;
      var $SQL = "";
      var $ErrNo = 0;
      var $ErrDesc = "";
      var $LastInsertId = Null;
      var $RecordCount = 0;
      var $arr = array();

      function Query(){
              $this->arr = $this->ReadConfig();
              $this->con = mysqli_connect($this->arr["OPENQRM_DATABASE_SERVER"], $this->arr["OPENQRM_DATABASE_USER"], $this->arr["OPENQRM_DATABASE_PASSWORD"], $this->arr["OPENQRM_DATABASE_NAME"]);
              $this->ErrDesc = mysqli_error($this->con);
      }

      function SQLRowQuery($SQL){
              $this->SQL = $SQL;
              $res = mysqli_query($this->con, $SQL);
              $row = mysqli_fetch_assoc($res);
              $this->ErrDesc = mysqli_error($this->con);
              return $row;
      }

      function SQLOp($SQL){
              $this->SQL = $SQL;
              $res = mysqli_query($this->con, $SQL);
              $this->ErrDesc = mysqli_error($this->con);
              $this->LastInsertId = mysqli_insert_id($this->con);
      }

      function SQLQuery($SQL){
              $i=0;
              $this->RecordCount = 0;
              $this->SQL = $SQL;
              $res = mysqli_query($this->con, $SQL);
              $row = Array();
              while($row[$i++] = mysqli_fetch_assoc($res));
              array_pop($row);
              $this->RecordCount = count($row);
              $this->ErrDesc = mysqli_error($this->con);
              return $row;
      }

      function ReadConfig(){
              $arr = file("/usr/share/openqrm/etc/openqrm-server.conf");
              foreach($arr as $line) {
                      $dmy = split("#", $line);                                                               # entferne kommentare
                      $line = $dmy[0];
                      $line = ereg_replace("'|\"|\t", "", $line);                     # entferne ", ', tab
                      if(preg_match("/^(.*?)=(.*?)$/",$line, $match)) {
                              $parameter = trim($match[1]);
                              $value = trim($match[2]);
                              $out[$parameter] = "$value";
                      }
              }
              return $out;
      }
}

$abfrage = new Query();

#------------------------------------------------------------------------------#
# echo "SELECT * FROM hardware;" | mysql -t -h localhost -uroot -pwDfgAsw openqrm
#------------------------------------------------------------------------------#

echo "<style>td{background-color: white; font: 12px tahoma}th{background-color: f0f0f0; font: 12px tahoma; font-weight: bold}</style>";
echo "<div class=htmlobject_tab_box id=currenttabtab0><h1>Resource Hardware Infos</h1><br>";

# mit Hilfe der APPLIANCEID wird die RESOURCEID ermittelt
$resourceid = $abfrage->SQLRowQuery("SELECT resource_id FROM appliance_info,resource_info WHERE resource_id=appliance_resources and appliance_id='".addslashes($_GET[appliance_id])."' LIMIT 1;");

# APPLIANCEID anzeigen
#echo "APPLIANCEID=$_GET[appliance_id]<br>";

# RESOURCEID anzeigen
#echo "RESOURCEID=$resourceid[resource_id]<br>";


# der alte Datensatz aus der DB, mit besagter RESOURCEID, wird abgerufen und angezeigt
$erg = $abfrage->SQLQuery("SELECT * FROM hardware WHERE resource_id='$resourceid[resource_id]';");

echo "
<table border=0 cellpadding=10 cellspacing=1 style=\"background-color: silver;\">
<tr>
        <th>rem_cons_ip</th>
        <th>timestamp</th>
        <th>resource_id</th>
        <th>resource_ip</th>
        <th>hostname</th>
        <th>appliance_id</th>
        <th>ip4</th>
        <th>mac</th>
        <th>netif</th>
        <th>bios_release_date</th>
        <th>bios_manufacturer</th>
        <th>bios_product_name</th>
        <th>bios_serial_number</th>
        <th>cpu_anzahl</th>
        <th>bus</th>
        <th>vm</th>
        <th>htt</th>
        <th>cpu_family</th>
        <th>cpu_manufacturer</th>
        <th>cpu_id</th>
        <th>cpu_signature</th>
        <th>cpu_core_count</th>
        <th>cpu_core_enabled</th>
        <th>memtotal</th>
        <th>hdd</th>
</tr>";

if(is_array($erg)) foreach($erg as $row){
        echo "
        <tr>
                <td>$row[rem_cons_ip]</td>
                <td>$row[timestamp]</td>
                <td>$row[resource_id]</td>
                <td>$row[resource_ip]</td>
                <td>$row[hostname]</td>
                <td>$row[appliance_id]</td>
                <td>$row[ip4]</td>
                <td>$row[mac]</td>
                <td>$row[netif]</td>
                <td>$row[bios_release_date]</td>
                <td>$row[bios_manufacturer]</td>
                <td>$row[bios_product_name]</td>
                <td>$row[bios_serial_number]</td>
                <td>$row[cpu_anzahl]</td><td>$row[bus]</td>
                <td>$row[vm]</td><td>$row[htt]</td>
                <td>$row[cpu_family]</td>
                <td>$row[cpu_manufacturer]</td>
                <td>$row[cpu_id]</td>
                <td>$row[cpu_signature]</td>
                <td>$row[cpu_core_count]</td>
                <td>$row[cpu_core_enabled]</td>
                <td>$row[memtotal]</td>
                <td>$row[hdd]</td>
        </tr>";
}
echo "</table>";

# aufgetretene Fehler
echo "$abfrage->ErrDesc<br>";


?>

/var/www/openqrm/base/server/appliance/appliance-hw_akt.php

HW-Infos aktualisieren

<?php

#####################
#
# Class Query
# by OLIMAC
#
# 2010-04-28: modifiziert
#
#####################

#------------------------------------------------------------------------------#
# Konfiguration einlesen
#------------------------------------------------------------------------------#


Class Query {

        var $con;
        var $SQL = "";
        var $ErrNo = 0;
        var $ErrDesc = "";
        var $LastInsertId = Null;
        var $RecordCount = 0;
        var $arr = array();
  
        function Query(){
                $this->arr = $this->ReadConfig();
                $this->con = mysqli_connect($this->arr["OPENQRM_DATABASE_SERVER"], $this->arr["OPENQRM_DATABASE_USER"], $this->arr["OPENQRM_DATABASE_PASSWORD"], $this->arr["OPENQRM_DATABASE_NAME"]);
                $this->ErrDesc = mysqli_error($this->con);
        }
  
        function SQLRowQuery($SQL){
                $this->SQL = $SQL;
                $res = mysqli_query($this->con, $SQL);
                $row = mysqli_fetch_assoc($res);
                $this->ErrDesc = mysqli_error($this->con);
                return $row;
        }
  
        function SQLOp($SQL){
                $this->SQL = $SQL;
                $res = mysqli_query($this->con, $SQL);
                $this->ErrDesc = mysqli_error($this->con);
                $this->LastInsertId = mysqli_insert_id($this->con);
        }
  
        function SQLQuery($SQL){
                $i=0;
                $this->RecordCount = 0;
                $this->SQL = $SQL;
                $res = mysqli_query($this->con, $SQL);
                $row = Array();
                while($row[$i++] = mysqli_fetch_assoc($res));
                array_pop($row);
                $this->RecordCount = count($row);
                $this->ErrDesc = mysqli_error($this->con);
                return $row;
        }
  
        function ReadConfig(){
                $arr = file("/usr/share/openqrm/etc/openqrm-server.conf");
                foreach($arr as $line) {
                        $dmy = split("#", $line);                                                               # entferne kommentare
                        $line = $dmy[0];
                        $line = ereg_replace("'|\"|\t", "", $line);                     # entferne ", ', tab
                        if(preg_match("/^(.*?)=(.*?)$/",$line, $match)) {
                                $parameter = trim($match[1]);
                                $value = trim($match[2]);
                                $out[$parameter] = "$value";
                        }
                }
                return $out;
        }
}

$abfrage = new Query();

#------------------------------------------------------------------------------#
# echo "SELECT * FROM hardware;" | mysql -t -h localhost -uroot -pwDfgAsw openqrm
#------------------------------------------------------------------------------#

echo "<style>td{background-color: white; font: 12px tahoma}th{background-color: f0f0f0; font: 12px tahoma; font-weight: bold}</style>";
echo "<div class=htmlobject_tab_box id=currenttabtab0><h1>Hardware Infos in der HW-DB aktuallisieren</h1><br>";

# mit Hilfe der APPLIANCEID wird die RESOURCEID ermittelt
$resourceid = $abfrage->SQLRowQuery("SELECT resource_id FROM appliance_info,resource_info WHERE resource_id=appliance_resources and appliance_id='".addslashes($_GET[appliance_id])."' LIMIT 1;");

# mit Hilfe der APPLIANCEID wird die RESOURCEIP ermittelt
$resourceip = $abfrage->SQLRowQuery("SELECT resource_ip FROM appliance_info,resource_info WHERE resource_id=appliance_resources and appliance_id='".addslashes($_GET[appliance_id])."' LIMIT 1;");

# APPLIANCEID anzeigen
echo "APPLIANCEID=$_GET[appliance_id]<br>";

# RESOURCEID anzeigen
echo "RESOURCEID=$resourceid[resource_id]<br>";

# RESOURCEIP anzeigen
echo "RESOURCEIP=$resourceip[resource_ip]<br>";


### der VM-Gast soll die Daten in die HW-DB aktuallisieren
echo '<pre>';
$last_line = system("/bin/bash /opt/bin/hwi2db.sh $resourceid[resource_id] $_GET[appliance_id]", $retval);
echo "Fehler=$retval<br>";
echo '</pre>';


?>

[/var/www/openqrm|/usr/src/openqrm/trunk/src/web]/base/server/appliance/appliance-index.php

HW-Knöpfe in der Appliance-Liste

Diese Datei wird auch nur ergänzt um zusätzliche Knöpfe zu bekommen.

alt

...

        $arHead['appliance_edit'] = array();
        $arHead['appliance_edit']['title'] ='';
        $arHead['appliance_edit']['sortable'] = false;

...
                $virtualization = new virtualization();
                $virtualization->get_instance_by_id($appliance_db["appliance_virtualization"]);
                $appliance_virtualization_type=$virtualization->name;

                $strEdit = '';
                $strEdit = '<a href="appliance-edit.php?appliance_id='.$appliance_db["appliance_id"].'&currenttab=tab2"><img src="../../img/edit.png" width="24" height="24" alt="edit"/> Edit</a>';

                $str = '<b>Kernel:</b> '.$kernel->name.'<br>
                                <b>Image:</b> '.$image->name.'<br>
                                <b>Resource:</b> '.$appliance_resources_str.'<br>
                                <b>Type:</b> '.$appliance_virtualization_type;

                $arBody[] = array(
                        'appliance_state' => "<img src=$state_icon>",
                        'appliance_icon' => "<img width=24 height=24 src=$resource_icon_default>",
                        'appliance_id' => $appliance_db["appliance_id"],
                        'appliance_name' => $appliance_db["appliance_name"],
                        'appliance_kernelid' => '',
                        'appliance_imageid' => '',
                        'appliance_resources' => '',
                        'appliance_values' => $str,
                        'appliance_type' => '',
                        'appliance_comment' => $appliance_db["appliance_comment"],
                        'appliance_edit' => $strEdit,
                );

...

neu

...

        $arHead['appliance_edit'] = array();
        $arHead['appliance_edit']['title'] ='';
        $arHead['appliance_edit']['sortable'] = false;

        $arHead['appliance_hw_db'] = array();
        $arHead['appliance_hw_db']['title'] ='';
        $arHead['appliance_hw_db']['sortable'] = false;

        $arHead['appliance_hw_akt'] = array();
        $arHead['appliance_hw_akt']['title'] ='';
        $arHead['appliance_hw_akt']['sortable'] = false;

...
                $virtualization = new virtualization();
                $virtualization->get_instance_by_id($appliance_db["appliance_virtualization"]);
                $appliance_virtualization_type=$virtualization->name;

                #if($image_db["image_id"] != 1) {
                  $strEdit = '';
                  $strEdit = '<a href="appliance-edit.php?appliance_id='.$appliance_db["appliance_id"].'&currenttab=tab2"><img src="../../img/edit.png" width="24" height="24" alt="edit"/> Edit</a>';
                #}

                $strHWDB = '';
                $strHWDB = '<a href="appliance-hw_db.php?appliance_id='.$appliance_db["appliance_id"].'&currenttab=tab2"><img src="../../img/edit.png" width="24" height="24" alt="hw_db"/> HW-DB</a>';

                $strHWakt = '';
                $strHWakt = '<a href="appliance-hw_akt.php?appliance_id='.$appliance_db["appliance_id"].'&currenttab=tab2"><img src="../../img/edit.png" width="24" height="24" alt="hw_akt"/> HW-akt</a>';


                $str = '<b>Kernel:</b> '.$kernel->name.'<br>
                                <b>Image:</b> '.$image->name.'<br>
                                <b>Resource:</b> '.$appliance_resources_str.'<br>
                                <b>Type:</b> '.$appliance_virtualization_type;

                $arBody[] = array(
                        'appliance_state' => "<img src=$state_icon>",
                        'appliance_icon' => "<img width=24 height=24 src=$resource_icon_default>",
                        'appliance_id' => $appliance_db["appliance_id"],
                        'appliance_name' => $appliance_db["appliance_name"],
                        'appliance_kernelid' => '',
                        'appliance_imageid' => '',
                        'appliance_resources' => '',
                        'appliance_values' => $str,
                        'appliance_type' => '',
                        'appliance_comment' => $appliance_db["appliance_comment"],
                        'appliance_edit' => $strEdit,
                        'appliance_hw_db' => $strHWDB,
                        'appliance_hw_akt' => $strHWakt,
                );

...

[/usr/share/openqrm|/usr/src/openqrm/trunk/src]/web/base/top.php

Knopf auf der Oberfläche hinzufühgen

Diese Datei wird angepasst, damit man zwei zusätzliche Knöpfe auf der Oberfläche bekommt. Einen für den direkten Zugang zu einem Wiki und den anderen zum abrufen von speziellen Infos aus der DB.

Es wird dieser Originalbereich in der PHP-Datei ergänzt:

alt
        ...
        <a id="Docu_box" href="server/zz_documentation/introduction.php" target="MainFrame">Documentation</a>
        <a id="Login_box" href="server/user/user.php" target="MainFrame"><?php echo OPENQRM_USER_NAME; ?></a>
        ...
neu

So soll es danach aussehen:

        ...
        <a id="Docu_box" href="server/zz_documentation/introduction.php" target="MainFrame">Documentation</a>
        <a id="Docu_box" href="/store.php" target="MainFrame">QRM-Info</a>
        <a id="Docu_box" href="http://wiki.server.net/wiki/" target="MainFrame">Wiki</a>
        <a id="Login_box" href="server/user/user.php" target="MainFrame"><?php echo OPENQRM_USER_NAME; ?></a>
        ...

/opt/bin/hardwareinfos_zeigen.sh

HW-DB auslesen

Es ist auch möglich die Datenbank von Hand einzusehen, hier ein kleines Script dafür:

#!/bin/sh

#------------------------------------------------------------------------------#
# User-Check

if [ "$(id -u)" != "0" ] ; then
      echo "Sie muessen 'root' sein"
      exit 1
fi

#------------------------------------------------------------------------------#
# VARIABLEN werden gesammelt bzw. gesetzt

. /opt/etc/hardwareinfos.cfg

#OPENQRM_DATABASE_SERVER=localhost
#OPENQRM_DATABASE_NAME=openqrm
#OPENQRM_DATABASE_USER=root
#OPENQRM_DATABASE_PASSWORD=geheim

#------------------------------------------------------------------------------#
# DB-Tabelle auslesen

#echo "SELECT resource_id,hostname,bios_release_date,bios_product_name,mac,cpu_anzahl,bus,htt,cpu_family,cpu_manufacturer,cpu_signature FROM ${HWINFOTAB} ORDER BY resource_id;" | mysql -t -h ${OPENQRM_DATABASE_SERVER} -u${OPENQRM_DATABASE_USER} -p${OPENQRM_DATABASE_PASSWORD} ${OPENQRM_DATABASE_NAME}

echo "SELECT resource_id,hostname,bios_release_date,bios_product_name,cpu_anzahl,bus,htt,cpu_family,cpu_manufacturer,cpu_signature FROM ${HWINFOTAB} ORDER BY resource_id;" | mysql -t -h ${OPENQRM_DATABASE_SERVER} -u${OPENQRM_DATABASE_USER} -p${OPENQRM_DATABASE_PASSWORD} ${OPENQRM_DATABASE_NAME}

automatischer HW-Eintrag beim Start

Die VM's sollen sich beim hoch fahren vollkommen selbstständig in die HW-DB eintragen. Damit sie das auch machen, müssen folgende Arbeitsschritte noch durchgeführt werden.

ablegen des Scripts

Dieses Script muss auf der VM ausgeführt werden.

Damit es fehlerfrei funktionieren kann, müssen folgende Programme installiert sein:

  • tr
  • sed
  • awk
  • MySQL-Client
  • date
  • hostname
  • ifconfig
  • find
  • fgrep
  • egrep
  • xargs
  • cat
  • dmidecode
  • wc
  • uniq
  • if
  • while
  • read
  • test
  • wget

Die meisten davon sind Bestandteil des Betriebssystems aber dmidecode muss zum Beispiel extra installiert werden.

Das folgende Script sollte hier abgelegt werden:

# vi /usr/share/openqrm/web/boot-service/hardwareinfos_zum_server_schicken.sh

Weil das der übliche Ort für Scripte ist, den openQRM vorgesehen hat. Von hieraus werden die VM's sich die benötigten Scripte selbstständig holen.

#!/bin/bash

#------------------------------------------------------------------------------#
#
# 2010-04-21: erstellt
# 2010-04-28: modifiziert
# 2010-06-29: modifiziert
#
#------------------------------------------------------------------------------#

#------------------------------------------------------------------------------#

if [ -r /usr/share/openqrm/etc/openqrm-server.conf ] ; then

. /opt/etc/hardwareinfos.cfg

export $(echo "SELECT appliance_id FROM appliance_info,resource_info WHERE appliance_resources=resource_id AND resource_id="0" LIMIT 1;" | mysql -h ${OPENQRM_DATABASE_SERVER} -u${OPENQRM_DATABASE_USER} -p${OPENQRM_DATABASE_PASSWORD} ${OPENQRM_DATABASE_NAME} | tr -s '\n' '=' | sed 's/=$/\n/') #| awk -F'=' '{print $1"=\""$2"\""}')
export $(echo "SELECT resource_id FROM appliance_info,resource_info WHERE appliance_resources=resource_id AND resource_id="0" LIMIT 1;" | mysql -h ${OPENQRM_DATABASE_SERVER} -u${OPENQRM_DATABASE_USER} -p${OPENQRM_DATABASE_PASSWORD} ${OPENQRM_DATABASE_NAME} | tr -s '\n' '=' | sed 's/=$/\n/') #| awk -F'=' '{print $1"=\""$2"\""}')
export $(echo "SELECT resource_ip FROM appliance_info,resource_info WHERE appliance_resources=resource_id AND resource_id="0" LIMIT 1;" | mysql -h ${OPENQRM_DATABASE_SERVER} -u${OPENQRM_DATABASE_USER} -p${OPENQRM_DATABASE_PASSWORD} ${OPENQRM_DATABASE_NAME} | tr -s '\n' '=' | sed 's/=$/\n/') #| awk -F'=' '{print $1"=\""$2"\""}')

fi

if [ -r /var/openqrm/openqrm-resource.conf ] ; then

. /var/openqrm/openqrm-resource.conf

else

resource_openqrmserver="${resource_ip}"

fi

#------------------------------------------------------------------------------#

echo "$(
# TIMESTAMP
echo "timestamp=$(date +'%Y-%m-%d %H:%M:%S')"

# RESOURCEID
echo "resource_id=${resource_id}"

# RESOURCEIP
echo "resource_ip=${resource_ip}"

# Hostname
echo "hostname=$(hostname -f)"

# APPLIANCEID
echo "appliance_id=${appliance_id}"

# IP-Adressen
for i in $(ls /sys/class/net/ | egrep '.+[0-9]$');do ip -f inet addr show dev ${i} | egrep inet | egrep -v ':0$' | awk -v geraet=${i} '{print "IP4="geraet" "$2}';done

# MAC-Adressen
for i in $(find /sys/ -type f | fgrep 'address');do NETIF="$(echo "${i}"|awk -F'/' '{print $(NF-1)}')";cat ${i} | awk -v netif="${NETIF}" '{print "mac="netif,$1}';done

# Netzwerkgeschwindigkeiten
for i in $(ls /sys/class/net/ | egrep '.+[0-9]$');do ethtool ${i} | awk -v netif="${i}" '/[Ss]peed:/ {print "netif="netif,$NF}';done

# BIOS-Datum
dmidecode -t 0 | fgrep -i 'Release Date:' | sed -e 's/^[ \t]*/BIOS /' -e 's/: /=/'

# System-Infos
dmidecode -t 1 | egrep -i 'Manufacturer:|Product Name:|Serial Number:' | sed -e 's/^[ \t]*/BIOS /' -e 's/: /=/'

# Anzahl der CPUs
dmidecode -t processor | egrep -i 'Socket Designation:' | wc -l | awk '{print "CPU Anzahl="$1}'

# Bus: 64Bit oder nicht
egrep ^flags /proc/cpuinfo | tr -s ' ' '
' | egrep ^lm | uniq | awk '{print "bus="$1}'

# Hardwarevirtualisierung
egrep ^flags /proc/cpuinfo | tr -s ' ' '
' | egrep 'vmx|svm' | uniq | awk '{print "vm="$1}'

# Hyper-Threading oder nicht
awk -v alt='^$' -v neu='#' '{sub(alt, neu)} /physical id|core id|#/ && /0$|#/ {print $NF}' /proc/cpuinfo | uniq -c | awk '!/#|1 0/' | wc -l | awk '{$1 > 1 ; print "htt="$1}'

# CPU-Infos
dmidecode -t processor | sed -e '1,/^$/ d' -e '/^$/ q' -e 's/^        /CPU /' -e 's/^\t/CPU /' -e 's/: /=/' | egrep -i 'Family=|Manufacturer=|ID=|Signature=|Core Count=|Core Enabled='

# Hauptspeichergröße
egrep ^MemTotal /proc/meminfo | sed 's/:[ ]*/=/'

# Festplatten
fgrep -H 0 /sys/class/block/*/removable | egrep -v 'loop|ram|dm-' | awk -F'/' '{print $5}' | while read DEV;do echo "HDD=${DEV} $(cat /sys/class/block/${DEV}/size | awk -F'/' '{print $1/2048}') MB";done

)" | awk -F'=' '{gsub("^\t*", "") ; gsub("^ *", "") ; wert=$2 ; gsub(" ", "_") ; variable=tolower($1) ; print variable"="wert}' > /tmp/hardwareinfos.txt

#------------------------------------------------------------------------------#

wget -q --post-file=/tmp/hardwareinfos.txt http://${resource_openqrmserver}/cgi-bin/hwi2db.cgi

globale rc-Datei aller VM's

Möchte man noch eigene Scripte beim Bootvorgang mit einbauen, dann bietet sich diese Datei an. Sie wird bei jedem Bootvorgang einer VM abgearbeitet.

# vi /usr/share/openqrm/etc/templates/openqrm-linuxrc

Allerdings kann man auch verschiedene Kernel-Images bauen, in die dann verschiedene Versionen dieser Datei liegen.

Zuerst hatte ich für das Script "/usr/share/openqrm/web/boot-service/hardwareinfos_zum_server_schicken.sh" auch an diese Initialdatei gedacht. Aber nach einigen Tests hat sich herausgestellt, dass zum Zeitpunkt, wenn dieses Script durchgelaufen ist, beginnt erst der eigentliche Bootvorgang vom vorgesehenem Image.

Also ist das hier viel zu früh.

Script in die rc.local eintragen

Diese Startmethode wird bei Ubuntu sehr stiefmütterlich behandelt, deshalb sollte man sich vielleicht überlegen ob man mit der Zeit mitgehen möchte und diese Aktion nicht vielleicht im Upstart-Script zu verankert.

Unser Script bauen wir lieber am Ende in die /etc/rc.local ein. Das ist am sichersten, muss aber leider in jedem vorhandenem Image einmal gemacht werden. Sowie im "Golden", dann braucht es in keinem neuen Image mehr nachgezogen werden.

Die Befehlszeilen mit einem Kommentar schreiben wir in dieser Form rein:

# vi /etc/rc.local
### in die HW-DB eintragen
. /var/openqrm/openqrm-resource.conf
wget -q -O /root/hardwareinfos_zum_server_schicken.sh "$openqrm_web_protocol://${resource_openqrmserver}/openqrm/boot-service/hardwareinfos_zum_server_schicken.sh"
/bin/sh  /root/hardwareinfos_zum_server_schicken.sh
exit 0

WICHTIG: Es muss vor dem "exit 0" stehen! Oder man entfernt das "exit 0" einfach.

Jetzt muss der rc.local-Dienst nur noch in die Liste der zu startenden Dienste eingetragen werden:

# update-rc.d rc.local defaults

Fertig!

/home/http/wiki/data/pages/vm_s_laden_ihre_hw-infos_beim_start_in_die_db.txt · Zuletzt geändert: von 127.0.0.1