...
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
...
echo "<?php \$ausgabe = system(\"/bin/sh /usr/lib/cgi-bin/store.cgi\", \$retval); echo \"\$ausgabe <br>\"; echo \"Fehler=\$retval<br>\"; ?>"
#!/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;"> </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"> </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"> </div>
</div>
<input type=hidden name="action" value="eintragen">
<br>
<input type=submit value="eintragen">
<br>
</form>
<div style="line-height:0px;clear:both;"> </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;"> </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;"> </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}' Ä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\"> </div>
</div>
"
fi
done
fi
done
echo '
<input type=hidden name="action" value="geaendert">
<br>
<input type=submit value="ändern">
<br>
</form>
<div style="line-height:0px;clear:both;"> </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;"> </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Ä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öscht</a></span></li>
</ul>
</div>
<div style="line-height:0px;clear:both;"> </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ültig lö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öscht</a></span></li>
</ul>
</div>
<div style="line-height:0px;clear:both;"> </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Ö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;"> </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>
'
. /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/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}
#!/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/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}
#!/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>
'
<?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;
}
?>
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>";
?>
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>';
?>
HW-Knöpfe in der Appliance-Liste
Diese Datei wird auch nur ergänzt um zusätzliche Knöpfe zu bekommen.
...
$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"].'¤ttab=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,
);
...
...
$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"].'¤ttab=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"].'¤ttab=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"].'¤ttab=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,
);
...
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:
...
<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>
...
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>
...
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}
#!/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