====== 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 "\"; echo \"Fehler=\$retval
\"; ?> " > ${WWWDIR}/store.php #------------------------------------------------------------------------------# fi ... ==== store.php ==== echo "\"; echo \"Fehler=\$retval
\"; ?>" ==== 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 ' if [ "${AKTION}" = "anlegen" ] ; then echo '
 
alle Remote IP-Adressen anzeigen

eine neue Remote IP-Adresse eintragen


 
 


 
' elif [ "${action}" = "eintragen" ] ; then ### der "action"-Eintrag wird entfernt sed -i -e 's/action=eintragen//' ${DATENDATEI} echo '
 
alle IP-Adressen der Remote-Consolen anzeigen

' ### 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 '
 
alle IP-Adressen der Remote-Consolen anzeigen

' echo "

Datensatz zur IP-Adresse '${WERT}' Ändern


" echo " " 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 "" else echo "
 
" fi done fi done echo '

 
' elif [ "${action}" = "geaendert" ] ; then sed -i -e 's#action=geaendert##' ${DATENDATEI} echo '
 
IP-Adressen der Remote-Consolen anzeigen
' 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 "
" 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#> <#>\n<#g' -e 's# #\n#g' | while read HTMLZEILE do SPALTENANFANG="$(echo "${HTMLZEILE}" | egrep '^$')" if [ -n "${SPALTENANFANG}" ] ; then SPALTENZAHL="0" fi SPALTENZAHL="$((${SPALTENZAHL}+1))" TH="$(echo "${HTMLZEILE}" | egrep '^')" if [ -z "${TH}" -a "${SPALTENZAHL}" = "2" ] ; then ZELLENWERT="$(echo "${HTMLZEILE}" | sed -e 's###' -e 's###')" echo "${ZELLENWERT} loeschen aendern" else echo "${HTMLZEILE}" fi done echo "
GEÄNDERT
" 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 '
 
alle Remote IP-Adressen anzeigen

' echo "
" 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 "Remote IP-Adresse ${WERT} entgültig löschen" elif [ "${AKTION}" = "geloescht" ] ; then echo '
 
alle Remote IP-Adressen anzeigen

' 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 "
" 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 "
GELÖSCHT
" 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 '
 
neue Remote IP-Adresse eintragen

' 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#> <#>\n<#g' -e 's# #\n#g' | while read HTMLZEILE do SPALTENANFANG="$(echo "${HTMLZEILE}" | egrep '^$')" if [ -n "${SPALTENANFANG}" ] ; then SPALTENZAHL="0" fi SPALTENZAHL="$((${SPALTENZAHL}+1))" TH="$(echo "${HTMLZEILE}" | egrep '^')" if [ -z "${TH}" -a "${SPALTENZAHL}" = "2" ] ; then ZELLENWERT="$(echo "${HTMLZEILE}" | sed -e 's###' -e 's###')" echo "loeschen aendern ${ZELLENWERT}" else echo "${HTMLZEILE}" fi done fi rm -f ${DATENDATEI} ${ZAHLEN1} ${ZAHLEN2} echo "

" echo ' ' ==== 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 ' openQRM Nutzung der Storages ' 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 "
" echo "ACHTUNG!!!
" echo "
" echo "diese "image_rootdevice"'s werden im Moment mehrfach verwendet:
" echo "
" 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 "
" echo "
" done fi echo "sortiert nach image_rootdevice:
" echo "
" 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 "
" #echo "
" # #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 "
" echo "
" #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 ' ' ==== /var/www/openqrm/action/hardwareinfos_in_db_schreiben.php ==== $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 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 ""; echo "

Resource Hardware Infos


"; # 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]
"; # RESOURCEID anzeigen #echo "RESOURCEID=$resourceid[resource_id]
"; # 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 " "; if(is_array($erg)) foreach($erg as $row){ echo " "; } echo "
rem_cons_ip timestamp resource_id resource_ip hostname appliance_id ip4 mac netif bios_release_date bios_manufacturer bios_product_name bios_serial_number cpu_anzahl bus vm htt cpu_family cpu_manufacturer cpu_id cpu_signature cpu_core_count cpu_core_enabled memtotal hdd
$row[rem_cons_ip] $row[timestamp] $row[resource_id] $row[resource_ip] $row[hostname] $row[appliance_id] $row[ip4] $row[mac] $row[netif] $row[bios_release_date] $row[bios_manufacturer] $row[bios_product_name] $row[bios_serial_number] $row[cpu_anzahl]$row[bus] $row[vm]$row[htt] $row[cpu_family] $row[cpu_manufacturer] $row[cpu_id] $row[cpu_signature] $row[cpu_core_count] $row[cpu_core_enabled] $row[memtotal] $row[hdd]
"; # aufgetretene Fehler echo "$abfrage->ErrDesc
"; ?> ==== /var/www/openqrm/base/server/appliance/appliance-hw_akt.php ==== HW-Infos aktualisieren 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 ""; echo "

Hardware Infos in der HW-DB aktuallisieren


"; # 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]
"; # RESOURCEID anzeigen echo "RESOURCEID=$resourceid[resource_id]
"; # RESOURCEIP anzeigen echo "RESOURCEIP=$resourceip[resource_ip]
"; ### der VM-Gast soll die Daten in die HW-DB aktuallisieren echo '
';
  $last_line = system("/bin/bash /opt/bin/hwi2db.sh $resourceid[resource_id] $_GET[appliance_id]", $retval);
  echo "Fehler=$retval
"; echo '
'; ?> ==== /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 = 'edit Edit'; $str = 'Kernel: '.$kernel->name.'
Image: '.$image->name.'
Resource: '.$appliance_resources_str.'
Type: '.$appliance_virtualization_type; $arBody[] = array( 'appliance_state' => "", 'appliance_icon' => "", '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 = 'edit Edit'; #} $strHWDB = ''; $strHWDB = 'hw_db HW-DB'; $strHWakt = ''; $strHWakt = 'hw_akt HW-akt'; $str = 'Kernel: '.$kernel->name.'
Image: '.$image->name.'
Resource: '.$appliance_resources_str.'
Type: '.$appliance_virtualization_type; $arBody[] = array( 'appliance_state' => "", 'appliance_icon' => "", '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 == ... Documentation ... == neu == So soll es danach aussehen: ... Documentation QRM-Info Wiki ... ==== 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