Benutzer-Werkzeuge

Webseiten-Werkzeuge


openqrm_-_hardware-info_s

openQRM - HardWare-Info's

etc/init.d/openqrm-plugin-hardwareinfos

...

function openqrm_plugin_hardwareinfos_init() {
        echo "Initializing the openQRM hardwareinfos-plugin"

        # linking the web dir
        ln -sf $OPENQRM_SERVER_BASE_DIR/openqrm/plugins/hardwareinfos/web $OPENQRM_WEBSERVER_DOCUMENT_ROOT/openqrm/base/plugins/hardwareinfos

        # linking the boot-service
        ln -sf $OPENQRM_SERVER_BASE_DIR/openqrm/plugins/hardwareinfos/web/boot-service-hardwareinfos.tgz $OPENQRM_WEBSERVER_DOCUMENT_ROOT/openqrm/boot-service/boot-service-hardwareinfos.tgz

        #------------------------------------------------------------------------------#
        # weitere Vorbereitungen
        aptitude update && aptitude -y safe-upgrade && aptitude -y install mysql-client coreutils sed hostname net-tools findutils grep dmidecode wget bash

        cp $OPENQRM_SERVER_BASE_DIR/openqrm/plugins/hardwareinfos/bin/hardwareinfos.sh /usr/share/openqrm/web/boot-service/hardwareinfos.sh
        WWWDIR="$(echo "$(cat $(ls $(cat $(apache2 -V | egrep 'HTTPD_ROOT|SERVER_CONFIG_FILE' | awk -F'"' '{print $2}' | tr -s '\n' '/' | sed 's#/$##') | egrep '^Include' | fgrep -v '^$' | sed -e 's#^Include[ ]*##' -e 's#.*/$#&\*#')) | egrep -i 'DocumentRoot' | awk '{print $NF}' | sort | uniq | head -n1)")"
        CGIBIN="$(cat $(ls $(cat $($(which httpd;which apache2) -V | egrep 'HTTPD_ROOT|SERVER_CONFIG_FILE' | awk -F'"' '{print $2}' | tr -s '\n' '/' | sed 's#/$##') | egrep '^Include' | fgrep -v '^$' | sed -e 's#^Include[ ]*##' -e 's#.*/$#&\*#')) | egrep -v '^#|DirectoryMatch' | egrep '/cgi-bin[/]*$' | sed -e 's#"##g' -e 's#[<>]*##g' | awk '{sub("/$","");print $NF}' | sort | uniq | head -n1)"

        if [ -d "${CGIBIN}" ] ;then
                sed -e -i "s#CGIBIN=.*#CGIBIN='${CGIBIN}'#" $OPENQRM_SERVER_BASE_DIR/openqrm/plugins/hardwareinfos/etc/hardwareinfos.cfg
                sed -e -i "s#WWWDIR=.*#WWWDIR='${WWWDIR}'#" $OPENQRM_SERVER_BASE_DIR/openqrm/plugins/hardwareinfos/etc/hardwareinfos.cfg
        fi

        if [ -d "${WWWDIR}" ] ;then
        echo "<?php

\$ausgabe = system(\"/bin/sh ${CGIBIN}/store.cgi\", \$retval);
echo \"\$ausgabe <br>\";

echo \"Fehler=\$retval<br>\";

?>
" > ${WWWDIR}/store.php
        #------------------------------------------------------------------------------#
        fi

...

store.php

echo "<?php

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

echo \"Fehler=\$retval<br>\";

?>"

cgi-bin/remconstab_aendern.cgi

#!/bin/sh

. /usr/share/openqrm/etc/openqrm-server.conf
. $OPENQRM_SERVER_BASE_DIR/openqrm/plugins/hardwareinfos/etc/openqrm-server.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>
'

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}

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

. /usr/share/openqrm/etc/openqrm-server.conf
. $OPENQRM_SERVER_BASE_DIR/openqrm/plugins/hardwareinfos/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
        . /usr/share/openqrm/etc/openqrm-server.conf
        . $OPENQRM_SERVER_BASE_DIR/openqrm/plugins/hardwareinfos/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}

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

. /usr/share/openqrm/etc/openqrm-server.conf
. $OPENQRM_SERVER_BASE_DIR/openqrm/plugins/hardwareinfos/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}

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/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/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/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>
        ...

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

. /usr/share/openqrm/etc/openqrm-server.conf
. $OPENQRM_SERVER_BASE_DIR/openqrm/plugins/hardwareinfos/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}

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

#!/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
/home/http/wiki/data/pages/openqrm_-_hardware-info_s.txt · Zuletzt geändert: von 127.0.0.1