====== openQRM - Tabellen für weitere IP-Gruppen ====== Wenn diese Dateien ins System übernommen wurden, dann müssen die erforderlichen Anpassungen in der DNS-Konfiguration: [[openQRM - DNS]] noch vorgenommen werden, damit die DNS-Einträge für die zusätzlichen IP's auch automatisch beim anlegen der Appliance vorgenommen werden. ===== Die Dateien ===== ==== einpacken ==== # tar cvf /var/lib/dokuwiki/data/media/openqrm_zimmer.tar /opt/bin/netzcfg.sh /opt/etc/zimmer_ip.cfg /usr/lib/cgi-bin/zimmer_ip-machen.cgi /usr/lib/cgi-bin/zimmer_netzcfg.cgi /var/www/zimmer_ipgroup_loeschen.php /var/www/zimmer_ipgroup-machen.php /usr/lib/cgi-bin/zimmer_iptable-aendern.cgi /opt/bin/ziptables_zeigen.sh /opt/bin/in_zipgroups_eintragen.sh /opt/bin/aus_zipgroups_austragen.sh /opt/bin/zipgroups_managen.sh /opt/bin/zipgroups_zeigen_html.sh /usr/share/openqrm/web/base/server/appliance/appliance-index.php /usr/share/openqrm/web/base/server/appliance/appliance-new.php /var/www/zimmer_ipgroup-machen.php ==== Liste der verpackten Dateien ==== -rwxr-xr-x 1 root root 297 2010-08-06 14:19 /opt/bin/aus_zipgroups_austragen.sh -rwxr-xr-x 1 root root 1512 2010-08-06 14:20 /opt/bin/in_zipgroups_eintragen.sh -rwxr-xr-x 1 root root 2945 2010-10-15 18:40 /opt/bin/netzcfg.sh -rwxr-xr-x 1 root root 2377 2010-08-06 17:53 /opt/bin/zipgroups_managen.sh -rwxr-xr-x 1 root root 2127 2010-08-05 12:53 /opt/bin/zipgroups_zeigen_html.sh -rwxr-xr-x 1 root root 312 2010-08-06 13:41 /opt/bin/ziptables_zeigen.sh -rw-r--r-- 1 root root 1046 2010-08-03 14:51 /opt/etc/zimmer_ip.cfg -rwxr-xr-x 1 root root 15724 2010-10-19 11:42 /usr/lib/cgi-bin/zimmer_ip-machen.cgi -rwxr-xr-x 1 root root 9076 2010-08-05 14:56 /usr/lib/cgi-bin/zimmer_iptable-aendern.cgi -rwxr-xr-x 1 root root 623 2010-10-15 18:31 /usr/lib/cgi-bin/zimmer_netzcfg.cgi -rw-r--r-- 1 root root 12562 2010-08-06 13:36 /usr/share/openqrm/web/base/server/appliance/appliance-index.php -rw-r--r-- 1 root root 15234 2010-08-06 10:35 /usr/share/openqrm/web/base/server/appliance/appliance-new.php -rw-r--r-- 1 root root 916 2010-10-15 17:03 /var/www/zimmer_ipgroup_loeschen.php -rw-r--r-- 1 root root 3627 2010-10-15 16:25 /var/www/zimmer_ipgroup-machen.php ==== Dateien installieren ==== Die Datenbank-Tabellen werden automatisch angelegt, hier ist also keine Handarbeit nötig. === auspacken === # tar xvf /var/lib/dokuwiki/data/media/openqrm_zimmer.tar -C / # cp /opt/bin/netzcfg.sh /usr/share/openqrm/web/boot-service/netzcfg.sh === damit die IP-Vergabe geloggt werden kann === # touch /var/log/zipgroups_managen.log # chown www-data:www-data /var/log/zipgroups_managen.log ===== /opt/etc/openqrm_sudo ===== www-data ALL=(ALL) NOPASSWD: /etc/init.d/nagios3 www-data ALL=(ALL) NOPASSWD: /etc/init.d/bind9 www-data ALL=(ALL) NOPASSWD: /opt/bin/in_zipgroups_eintragen.sh www-data ALL=(ALL) NOPASSWD: /opt/bin/aus_zipgroups_austragen.sh Wichtig ist hierbei, dass //sudo// in diesem Verzeichnis keine symbolischen Link's akzeptiert! # cp /opt/etc/openqrm_sudo /etc/sudoers.d/ # chmod 0440 /etc/sudoers.d/openqrm_sudo Sollte dort ein symbolischen Link liegen, dann bekommt man solchen Output: sudo: /etc/sudoers.d/openqrm_sudo is not a regular file >>> /etc/sudoers.d/README: /etc/sudoers.d/openqrm_sudo near line 18 <<< sudo: parse error in /etc/sudoers.d/README near line 18 sudo: no valid sudoers sources found, quitting *** glibc detected *** sudo: double free or corruption (!prev): 0x0000000001328910 *** ======= Backtrace: ========= /lib/libc.so.6(+0x775b6)[0x7f523eab85b6] /lib/libc.so.6(cfree+0x73)[0x7f523eabee83] /lib/libc.so.6(fclose+0x14d)[0x7f523eaa8abd] sudo[0x41112b] sudo[0x4120c6] sudo[0x40fd24] sudo[0x4139ce] /lib/libc.so.6(__libc_start_main+0xfd)[0x7f523ea5fc4d] sudo[0x403739] ======= Memory map: ======== 00400000-00422000 r-xp 00000000 08:01 8438 /usr/bin/sudo 00621000-00622000 r--p 00021000 08:01 8438 /usr/bin/sudo 00622000-00624000 rw-p 00022000 08:01 8438 /usr/bin/sudo 00624000-00627000 rw-p 00000000 00:00 0 01324000-01345000 rw-p 00000000 00:00 0 [heap] 7f5238000000-7f5238021000 rw-p 00000000 00:00 0 7f5238021000-7f523c000000 ---p 00000000 00:00 0 7f523ddb6000-7f523ddcc000 r-xp 00000000 08:01 94384 /lib/libgcc_s.so.1 7f523ddcc000-7f523dfcb000 ---p 00016000 08:01 94384 /lib/libgcc_s.so.1 7f523dfcb000-7f523dfcc000 r--p 00015000 08:01 94384 /lib/libgcc_s.so.1 7f523dfcc000-7f523dfcd000 rw-p 00016000 08:01 94384 /lib/libgcc_s.so.1 7f523dfcd000-7f523dfd9000 r-xp 00000000 08:01 8798 /lib/libnss_files-2.11.1.so 7f523dfd9000-7f523e1d8000 ---p 0000c000 08:01 8798 /lib/libnss_files-2.11.1.so 7f523e1d8000-7f523e1d9000 r--p 0000b000 08:01 8798 /lib/libnss_files-2.11.1.so 7f523e1d9000-7f523e1da000 rw-p 0000c000 08:01 8798 /lib/libnss_files-2.11.1.so 7f523e1da000-7f523e1e4000 r-xp 00000000 08:01 8788 /lib/libnss_nis-2.11.1.so 7f523e1e4000-7f523e3e3000 ---p 0000a000 08:01 8788 /lib/libnss_nis-2.11.1.so 7f523e3e3000-7f523e3e4000 r--p 00009000 08:01 8788 /lib/libnss_nis-2.11.1.so 7f523e3e4000-7f523e3e5000 rw-p 0000a000 08:01 8788 /lib/libnss_nis-2.11.1.so 7f523e3e5000-7f523e3fc000 r-xp 00000000 08:01 8215 /lib/libnsl-2.11.1.so 7f523e3fc000-7f523e5fb000 ---p 00017000 08:01 8215 /lib/libnsl-2.11.1.so 7f523e5fb000-7f523e5fc000 r--p 00016000 08:01 8215 /lib/libnsl-2.11.1.so 7f523e5fc000-7f523e5fd000 rw-p 00017000 08:01 8215 /lib/libnsl-2.11.1.so 7f523e5fd000-7f523e5ff000 rw-p 00000000 00:00 0 7f523e5ff000-7f523e607000 r-xp 00000000 08:01 8787 /lib/libnss_compat-2.11.1.so 7f523e607000-7f523e806000 ---p 00008000 08:01 8787 /lib/libnss_compat-2.11.1.so 7f523e806000-7f523e807000 r--p 00007000 08:01 8787 /lib/libnss_compat-2.11.1.so 7f523e807000-7f523e808000 rw-p 00008000 08:01 8787 /lib/libnss_compat-2.11.1.so 7f523e808000-7f523e811000 r-xp 00000000 08:01 8217 /lib/libcrypt-2.11.1.so 7f523e811000-7f523ea11000 ---p 00009000 08:01 8217 /lib/libcrypt-2.11.1.so 7f523ea11000-7f523ea12000 r--p 00009000 08:01 8217 /lib/libcrypt-2.11.1.so 7f523ea12000-7f523ea13000 rw-p 0000a000 08:01 8217 /lib/libcrypt-2.11.1.so 7f523ea13000-7f523ea41000 rw-p 00000000 00:00 0 7f523ea41000-7f523ebbb000 r-xp 00000000 08:01 8795 /lib/libc-2.11.1.so 7f523ebbb000-7f523edba000 ---p 0017a000 08:01 8795 /lib/libc-2.11.1.so 7f523edba000-7f523edbe000 r--p 00179000 08:01 8795 /lib/libc-2.11.1.so 7f523edbe000-7f523edbf000 rw-p 0017d000 08:01 8795 /lib/libc-2.11.1.so 7f523edbf000-7f523edc4000 rw-p 00000000 00:00 0 7f523edc4000-7f523edc6000 r-xp 00000000 08:01 8799 /lib/libdl-2.11.1.so 7f523edc6000-7f523efc6000 ---p 00002000 08:01 8799 /lib/libdl-2.11.1.so 7f523efc6000-7f523efc7000 r--p 00002000 08:01 8799 /lib/libdl-2.11.1.so 7f523efc7000-7f523efc8000 rw-p 00003000 08:01 8799 /lib/libdl-2.11.1.so 7f523efc8000-7f523efd4000 r-xp 00000000 08:01 241987 /lib/libpam.so.0.82.2 7f523efd4000-7f523f1d3000 ---p 0000c000 08:01 241987 /lib/libpam.so.0.82.2 7f523f1d3000-7f523f1d4000 r--p 0000b000 08:01 241987 /lib/libpam.so.0.82.2 7f523f1d4000-7f523f1d5000 rw-p 0000c000 08:01 241987 /lib/libpam.so.0.82.2 7f523f1d5000-7f523f1f5000 r-xp 00000000 08:01 8216 /lib/ld-2.11.1.so 7f523f3e6000-7f523f3ea000 rw-p 00000000 00:00 0 7f523f3f2000-7f523f3f4000 rw-p 00000000 00:00 0 7f523f3f4000-7f523f3f5000 r--p 0001f000 08:01 8216 /lib/ld-2.11.1.so 7f523f3f5000-7f523f3f6000 rw-p 00020000 08:01 8216 /lib/ld-2.11.1.so 7f523f3f6000-7f523f3f7000 rw-p 00000000 00:00 0 7fffe4b96000-7fffe4bab000 rw-p 00000000 00:00 0 [stack] 7fffe4bff000-7fffe4c00000 r-xp 00000000 00:00 0 [vdso] ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall] Aborted ===== /opt/etc/zimmer_ip.cfg ===== Hier werden die Tabellennamen für die Gruppentabelle und für die IP-Tabelle sowie die Sortierreihenfolge der Anzeigen festgelegt. . /usr/share/openqrm/etc/openqrm-server.conf ZIPGROUPS="zimmer_ipgroups" ZIPTABLES="zimmer_iptables" ZIPGORDER="ig_id" #ZIPGORDER="ig_name" ZIPTORDER="INET_ATON(ip_address)" DATABASENET='10.4.' EXTERNNET='10.7.' ### Tabellen anlegen, wenn nicht schon vorhanden! echo " CREATE DATABASE IF NOT EXISTS ${OPENQRM_DATABASE_NAME}; USE ${OPENQRM_DATABASE_NAME}; CREATE TABLE IF NOT EXISTS ${ZIPGROUPS} ( ig_id int(5) NOT NULL, ig_name varchar(50) NOT NULL, ig_domain varchar(50) default NULL, PRIMARY KEY (ig_id), KEY (ig_name) ) TYPE=MyISAM; CREATE TABLE IF NOT EXISTS ${ZIPTABLES} ( ip_ig_id int(5) NOT NULL, ip_eth varchar(8) default 'eth1', ip_hostname varchar(50), ip_domain varchar(50) NOT NULL, ip_address varchar(15) NOT NULL, ip_subnet varchar(15), ip_gateway varchar(15), ip_dns1 varchar(15), ip_dns2 varchar(15), PRIMARY KEY (ip_address) ) TYPE=MyISAM; " | mysql -H -h ${OPENQRM_DATABASE_SERVER} -u${OPENQRM_DATABASE_USER} -p${OPENQRM_DATABASE_PASSWORD} ${OPENQRM_DATABASE_NAME} ===== /opt/bin/netzcfg.sh ===== Dieses Script wird vom Clienten ausgeführt, um die zusätzliche Netzwerkkonfiguration durchzuführen. #!/bin/bash aptitude -y install links ethtool LINKS="$(which links)" if [ -n "${LINKS}" ] ; then . /var/openqrm/openqrm-resource.conf IFS="|" ${LINKS} -dump http://${resource_openqrmserver}/cgi-bin/zimmer_netzcfg.cgi?ip_hostname=$(hostname) | egrep -v '[\+\|]---------' | while read ANFANG ip_eth ip_hostname ip_domain ip_address ip_subnet ip_gateway ip_dns1 ip_dns2 ENDE do ip_eth="$(echo "${ip_eth}" | awk '{print $1}')" ip_hostname="$(echo "${ip_hostname}" | awk '{print $1}')" ip_domain="$(echo "${ip_domain}" | awk '{print $1}')" ip_address="$(echo "${ip_address}" | awk '{print $1}')" ip_subnet="$(echo "${ip_subnet}" | sed 's/%22//g' | awk '{print $1}')" ip_gateway="$(echo "${ip_gateway}" | sed 's/%22//g' | awk '{print $1}')" ip_dns1="$(echo "${ip_dns1}" | sed 's/%22//g' | awk '{print $1}')" ip_dns2="$(echo "${ip_dns2}" | sed 's/%22//g' | awk '{print $1}')" if [ -z "${1}" ] ; then if [ -n "${ip_address}" -a -n "${ip_eth}" -a "${ip_address}" != "NULL" -a "${ip_eth}" != "NULL" ] ; then echo "ip addr add ${ip_address}/${ip_subnet} dev ${ip_eth}" ip addr add ${ip_address}/${ip_subnet} dev ${ip_eth} echo "ip link set ${ip_eth} up" ip link set ${ip_eth} up fi if [ -n "${ip_gateway}" -a -n "${ip_eth}" -a "${ip_gateway}" != "NULL" -a "${ip_eth}" != "NULL" ] ; then if $(ip route | egrep ^default > /dev/null) ; then echo "ip route add ${ip_gateway} dev ${ip_eth}" ip route add ${ip_gateway} dev ${ip_eth} else echo "ip route add default via ${ip_gateway} dev ${ip_eth}" ip route add default via ${ip_gateway} dev ${ip_eth} fi fi if [ -n "${ip_domain}" -o -n "${ip_dns1}" -o -n "${ip_dns2}" -a "${ip_domain}" != "NULL" -a "${ip_dns1}" != "NULL" -a "${ip_dns2}" != "NULL" ] ; then echo "search idstein.alphatel.de victorvox.net med.alphatel.de alphatel.de database extern" \ # | tee /etc/resolv.conf fi if [ -n "${ip_domain}" -a "${ip_domain}" != "NULL" ] ; then echo "domain ${ip_domain}" \ # | tee -a /etc/resolv.conf fi if [ -n "${ip_dns1}" -a "${ip_dns1}" != "NULL" ] ; then echo "nameserver ${ip_dns1}" \ # | tee -a /etc/resolv.conf fi if [ -n "${ip_dns2}" -a "${ip_dns2}" != "NULL" ] ; then echo "nameserver ${ip_dns2}" \ # | tee -a /etc/resolv.conf fi else echo " ANFANG='${ANFANG}' ip_eth='${ip_eth}' ip_hostname='${ip_hostname}' ip_domain='${ip_domain}' ip_address='${ip_address}' ip_subnet='${ip_subnet}' ip_gateway='${ip_gateway}' ip_dns1='${ip_dns1}' ip_dns2='${ip_dns2}' ENDE='${ENDE}' " fi done else echo "links konnte nicht installiert werden" fi ===== /usr/lib/cgi-bin/zimmer_netzcfg.cgi ===== #!/bin/sh . /opt/etc/zimmer_ip.cfg ### GET AKTION="$(echo "${QUERY_STRING}" | awk -F'=' '{print $1}')" WERT="$(echo "${QUERY_STRING}" | awk -F'=' '{print $2}' | awk -F'&' '{print $1}')" if [ "${AKTION}" = "ip_hostname" ] ; then echo 'Content-type: text/html ' echo " SELECT ip_eth,ip_hostname,ip_domain,ip_address,ip_subnet,ip_gateway,ip_dns1,ip_dns2 FROM ${ZIPTABLES} WHERE ip_hostname='${WERT}' ORDER BY ip_eth DESC ; " | mysql -H -N -h ${OPENQRM_DATABASE_SERVER} -u${OPENQRM_DATABASE_USER} -p${OPENQRM_DATABASE_PASSWORD} ${OPENQRM_DATABASE_NAME} fi chmod 0755 /usr/lib/cgi-bin/zimmer_netzcfg.cgi ===== /usr/share/openqrm/web/base/top.php ===== Hier ist die Zeile mit **/cgi-bin/zimmer_ip-machen.cgi** eingefühgt worden: ....
Error(s) Support Documentation Remote-Consolen-IP's QRM-Info Zimmer-IP-Gruppen Wiki
 
.... ===== /usr/lib/cgi-bin/zimmer_ip-machen.cgi ===== Dieses Script ist das Herzstück, hier werden alle wichtigen Aktionen mit realisiert. #!/bin/sh DATENDATEI="$(mktemp /tmp/zimmer.XXXXXXXXXXXX)" ### POST-Daten werden in eine Datei geschrieben echo "$(dd bs=1 count=${CONTENT_LENGTH} 2> /dev/null | tr -s '&' '\n')" | tr -d '"' > ${DATENDATEI} 2>&1 . ${DATENDATEI} . /opt/etc/zimmer_ip.cfg ### 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 if [ -n "${1}" -a -z "${AKTION}" ] ; then AKTION="$(echo "${1}" | awk -F'=' '{print $1}')" WERT="$(echo "${1}" | awk -F'=' '{print $2}')" fi ### mit dem richtigen "action"-Eintrag wird eine neue Gruppe erstelt if [ "${action}" = "angelegt" ] ; then #------------------------------------------------------------------------------# ### den neuen Wert für ig_id bestimmen ZAHLEN1="$(mktemp /tmp/zimmer.XXXXXXXXXXXX)" ZAHLEN2="$(mktemp /tmp/zimmer.XXXXXXXXXXXX)" igidmax="$(echo "SELECT ig_id FROM ${ZIPGROUPS} ORDER BY ${ZIPGORDER} DESC LIMIT 1;"|mysql -N -h ${OPENQRM_DATABASE_SERVER} -u${OPENQRM_DATABASE_USER} -p${OPENQRM_DATABASE_PASSWORD} ${OPENQRM_DATABASE_NAME})" echo "$(seq 1 ${igidmax})" > ${ZAHLEN1} echo " SELECT ig_id FROM ${ZIPGROUPS} ORDER BY ${ZIPGORDER} ASC; "|mysql -N -h ${OPENQRM_DATABASE_SERVER} -u${OPENQRM_DATABASE_USER} -p${OPENQRM_DATABASE_PASSWORD} ${OPENQRM_DATABASE_NAME} | egrep -v '^$' > ${ZAHLEN2} ig_id="$(sdiff ${ZAHLEN1} ${ZAHLEN2} | fgrep '<' | awk '{print $1}' | head -n1)" if [ -z "${ig_id}" -o "${ig_id}" = "0" ] ; then ig_id="$((${igidmax}+1))" fi rm -f ${ZAHLEN1} ${ZAHLEN2} ### der "action"-Eintrag wird entfernt sed -i -e 's/action=angelegt//' -e 's/ip_adressen=.*//' -e 's/ig_name=.*//' ${DATENDATEI} ### die neue Gruppe wird erstelt (echo "INSERT INTO ${ZIPGROUPS} (ig_id,ig_name,ig_domain) VALUES ('${ig_id}','${ig_name}','${ip_domain}');" | mysql -H -h ${OPENQRM_DATABASE_SERVER} -u${OPENQRM_DATABASE_USER} -p${OPENQRM_DATABASE_PASSWORD} ${OPENQRM_DATABASE_NAME} 2>&1 ### IPs in die Tabelle eintragen echo "${ip_adressen}" | sed -e 's#%0D%0A#\n#g' | egrep -v '^$' | while read ADRESSE do echo "INSERT INTO ${ZIPTABLES} (ip_ig_id,ip_address,$(cat ${DATENDATEI}|egrep -v '^$'|awk -F'=' '{print $1}'|tr -s '\n' ','|sed 's/,$//')) VALUES ('${ig_id}','${ADRESSE}',$(cat ${DATENDATEI}|egrep -v '^$'|awk -F'=' '{print $2}'|sed "s/.*/'&'/"|tr -s '\n' ','|sed "s/',$/'/"));" done) | mysql -H -h ${OPENQRM_DATABASE_SERVER} -u${OPENQRM_DATABASE_USER} -p${OPENQRM_DATABASE_PASSWORD} ${OPENQRM_DATABASE_NAME} 2>&1 ### und noch ein schöner Gruß /usr/lib/cgi-bin/zimmer_ip-machen.cgi elif [ "${action}" = "aendern" ] ; then sed -i -e 's/action=aendern//' ${DATENDATEI} echo 'Content-type: text/html
 
' IGID="$(echo "SELECT ip_ig_id FROM ${ZIPTABLES} WHERE ip_address='${ip_address}' LIMIT 1;"|mysql -N -h ${OPENQRM_DATABASE_SERVER} -u${OPENQRM_DATABASE_USER} -p${OPENQRM_DATABASE_PASSWORD} ${OPENQRM_DATABASE_NAME})" echo "
alle Zimmer IP-Gruppen anzeigen
alle Zimmer IPs zeigen
alle Zimmer IP's der Gruppe '${IGID}' anzeigen " echo "UPDATE ${ZIPTABLES} SET $(cat ${DATENDATEI} | fgrep -v ip_address | sed -e "s#=#='#" -e "s#.*#&'#" -e "s#^'##" | tr -s '\n' ',' | sed -e 's#,$##') WHERE ip_address='${ip_address}'; SELECT * FROM ${ZIPTABLES} WHERE ip_address='${ip_address}';" | 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}" elif [ -z "${TH}" -a "${SPALTENZAHL}" = "6" ] ; then ZELLENWERT="$(echo "${HTMLZEILE}" | sed -e 's###' -e 's###')" #echo "${ZELLENWERT}" echo "löschen ändern ${ZELLENWERT}" else echo "${HTMLZEILE}" fi done elif [ "${AKTION}" = "liste" ] ; then AKTION="" #------------------------------------------------------------------------------# echo 'Content-type: text/html
 
alle Zimmer IP-Gruppen anzeigen
alle Zimmer IPs zeigen
neue Zimmer IP-Gruppe anlegen

' echo "SELECT * FROM ${ZIPTABLES} ORDER BY ${ZIPTORDER} ; " | 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}" elif [ -z "${TH}" -a "${SPALTENZAHL}" = "4" ] ; then ZELLENWERT="$(echo "${HTMLZEILE}" | sed -e 's###' -e 's###')" echo "${ZELLENWERT}" elif [ -z "${TH}" -a "${SPALTENZAHL}" = "6" ] ; then ZELLENWERT="$(echo "${HTMLZEILE}" | sed -e 's###' -e 's###')" #echo "${ZELLENWERT}" echo "löschen ändern ${ZELLENWERT}" else echo "${HTMLZEILE}" fi done elif [ "${AKTION}" = "loeschen" ] ; then AKTION="" echo 'Content-type: text/html
 
' echo "
alle Zimmer IP-Gruppen anzeigen
alle Zimmer IPs zeigen
alle Zimmer IP's der Gruppe '${WERT}' anzeigen (zur Überprüfung) " echo "DELETE FROM ${ZIPTABLES} WHERE ip_ig_id='${WERT}';" | mysql -H -h ${OPENQRM_DATABASE_SERVER} -u${OPENQRM_DATABASE_USER} -p${OPENQRM_DATABASE_PASSWORD} ${OPENQRM_DATABASE_NAME} 2>&1 echo "DELETE FROM ${ZIPGROUPS} WHERE ig_id='${WERT}';" | mysql -H -h ${OPENQRM_DATABASE_SERVER} -u${OPENQRM_DATABASE_USER} -p${OPENQRM_DATABASE_PASSWORD} ${OPENQRM_DATABASE_NAME} 2>&1 elif [ "${AKTION}" = "aendern" ] ; then #------------------------------------------------------------------------------# if [ -z "${1}" ] ; then echo 'Content-type: text/html
 
Zimmer IP-Gruppen ' fi #------------------------------------------------------------------------------# echo " SELECT * FROM ${ZIPTABLES} WHERE ip_ig_id=${WERT} ORDER BY ${ZIPTORDER} 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}" = "4" ] ; then ZELLENWERT="$(echo "${HTMLZEILE}" | sed -e 's###' -e 's###')" echo "${ZELLENWERT}" elif [ -z "${TH}" -a "${SPALTENZAHL}" = "6" ] ; then ZELLENWERT="$(echo "${HTMLZEILE}" | sed -e 's###' -e 's###')" echo "löschen ändern ${ZELLENWERT}" else echo "${HTMLZEILE}" fi done echo "
" echo "
" #------------------------------------------------------------------------------# else #------------------------------------------------------------------------------# echo 'Content-type: text/html
 
alle Zimmer IPs zeigen
neue Zimmer IP-Gruppe anlegen

' echo " SELECT * FROM ${ZIPGROUPS} ORDER BY ${ZIPGORDER} ASC ; " | mysql -H -h ${OPENQRM_DATABASE_SERVER} -u${OPENQRM_DATABASE_USER} -p${OPENQRM_DATABASE_PASSWORD} ${OPENQRM_DATABASE_NAME} \ | tr -s '\n' ' ' \ | sed -e 's#[0-9]*#l\öschen auflisten hinzuf\ügenListe &#g' -e 's#=#=#g' -e 's#>Liste #>#g' -e 's###g' -e 's#> <#>\n<#g' fi rm -f ${DATENDATEI} ${ZAHLEN1} ${ZAHLEN2} echo "

" echo ' ' chmod 0755 /usr/lib/cgi-bin/zimmer_ip-machen.cgi ===== /var/www/zimmer_ipgroup_loeschen.php =====
 

Sind Sie wirklich sicher, dass Sie die Zimmer-IP-Gruppe löschen wollen?

">Zimmer IP-Gruppe löschen

===== /var/www/zimmer_ipgroup-machen.php =====
 

neue Zimmer IP-Gruppe erstellen



 
 
 
 
 
 
 
 


 
===== /usr/lib/cgi-bin/zimmer_iptable-aendern.cgi ===== #!/bin/sh DATENDATEI="$(mktemp /tmp/zimmer.XXXXXXXXXXXX)" ### POST-Daten werden in eine Datei geschrieben echo "$(dd bs=1 count=${CONTENT_LENGTH} 2> /dev/null | tr -s '&' '\n')" | sed -e 's/=+/=/g' -e 's/+$//g' | tr -d '"' > ${DATENDATEI} 2>&1 . ${DATENDATEI} . /opt/etc/zimmer_ip.cfg ### GET AKTION="$(echo "${QUERY_STRING}" | awk -F'=' '{print $1}')" WERT="$(echo "${QUERY_STRING}" | awk -F'=' '{print $2}' | awk -F'&' '{print $1}')" if [ -n "${1}" -a -z "${AKTION}" ] ; then AKTION="$(echo "${1}" | awk -F'=' '{print $1}')" WERT="$(echo "${1}" | awk -F'=' '{print $2}')" fi #------------------------------------------------------------------------------# echo "Content-type: text/html " #------------------------------------------------------------------------------# if [ "${AKTION}" = "aendern" ] ; then echo "
 

Datensatz zur Zimmer-IP '${WERT}' ändern


" echo " SELECT * FROM ${ZIPTABLES} WHERE ip_address='${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 ip_ig_id | while read SPALTENNR SPALTENNAME do SPALTENWERT="$(echo "${DATEN}" | head -n${SPALTENNR} | tail -n1 | tr -d '"')" if [ "${SPALTENNAME}" = "ip_address" ] ; then echo "" else echo "
 
" fi done fi done #------------------------------------------------------------------------------# echo '

 
' #------------------------------------------------------------------------------# elif [ "${AKTION}" = "loeschen" ] ; then IGID="$(echo "SELECT ip_ig_id FROM ${ZIPTABLES} WHERE ip_address='${WERT}' LIMIT 1;"|mysql -N -h ${OPENQRM_DATABASE_SERVER} -u${OPENQRM_DATABASE_USER} -p${OPENQRM_DATABASE_PASSWORD} ${OPENQRM_DATABASE_NAME})" echo "
 

Zimmer-IP '${WERT}' aus der IP-Gruppe '${IGID}' gelöscht


alle Zimmer IP-Gruppen anzeigen
alle Zimmer IP's der Gruppe '${IGID}' anzeigen

" echo " DELETE FROM ${ZIPTABLES} WHERE ip_address='${WERT}' ;" | mysql -H -h ${OPENQRM_DATABASE_SERVER} -u${OPENQRM_DATABASE_USER} -p${OPENQRM_DATABASE_PASSWORD} ${OPENQRM_DATABASE_NAME} 2>&1 elif [ "${AKTION}" = "hinzufuegen" ] ; then echo "
 

zur Zimmer IP-Gruppe '${WERT}' weitere IP's hinzufügen


alle Zimmer IP-Gruppen

" IPGRUPPE="$(echo " SELECT * FROM ${ZIPTABLES} WHERE ip_ig_id='${WERT}' LIMIT 1 ;" | 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')" KOPF="$(echo "${IPGRUPPE}" | head -n1 | sed -e 's/ //g' -e 's/|/\n/g' | egrep -v '^$')" DATEN="$(echo "${IPGRUPPE}" | tail -n1 | sed -e 's/ //g' -e 's/|/\n/g' | egrep -v '^$')" echo "${KOPF}" | nl | while read SPALTENNUMMER SPALTENNAME do if [ "${SPALTENNAME}" = "ip_address" ] ; then SPALTENWERT="" SPALTENBEZ="${SPALTENNAME}" else SPALTENWERT="$(echo "${DATEN}" | head -n${SPALTENNUMMER} | tail -n1)" SPALTENBEZ="${SPALTENNAME}" fi echo "
 
" done echo "

 
" elif [ "${action}" = "hinzugefuegt" ] ; then echo "
 

'${ip_address}' wurde zur Zimmer IP-Gruppe '${ip_ig_id}' hinzugefügt


alle Zimmer IP-Gruppen

" ### der "action"-Eintrag wird entfernt sed -i -e 's/action=hinzugefuegt//' ${DATENDATEI} ### IP in die Tabelle eintragen echo "INSERT INTO ${ZIPTABLES} ($(cat ${DATENDATEI}|egrep -v '^$'|awk -F'=' '{print $1}'|tr -s '\n' ','|sed 's/,$//')) VALUES ($(cat ${DATENDATEI}|egrep -v '^$'|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} 2>&1 /usr/lib/cgi-bin/zimmer_ip-machen.cgi aendern=${ip_ig_id} fi rm -f ${DATENDATEI} ===== /opt/bin/ziptables_zeigen.sh ===== #!/bin/sh . /opt/etc/zimmer_ip.cfg #SELECT ip_eth,ip_hostname,ip_domain,ip_address,ip_subnet,ip_gateway,ip_dns1,ip_dns2 echo " SELECT * FROM ${ZIPTABLES} ORDER BY ${ZIPTORDER} ASC ; " | mysql -t -h ${OPENQRM_DATABASE_SERVER} -u${OPENQRM_DATABASE_USER} -p${OPENQRM_DATABASE_PASSWORD} ${OPENQRM_DATABASE_NAME} ===== /opt/bin/in_zipgroups_eintragen.sh ===== #!/bin/sh ZID="${1}" ZNETIF="${2}" ZHOSTNAME="${3}" if [ -n "${3}" ] ; then . /opt/etc/zimmer_ip.cfg ZIPADRESSE="$(echo " SELECT ip_address FROM ${ZIPTABLES} WHERE ip_ig_id='${ZID}' AND (ip_hostname IS NULL OR ip_hostname = 'NULL' OR ip_hostname = '') ORDER BY ${ZIPTORDER} ASC LIMIT 1 ;" \ | mysql -N -h ${OPENQRM_DATABASE_SERVER} -u${OPENQRM_DATABASE_USER} -p${OPENQRM_DATABASE_PASSWORD} ${OPENQRM_DATABASE_NAME})" KONFLIKT="$(echo " SELECT ip_hostname FROM ${ZIPTABLES} WHERE ip_ig_id='${ZID}' AND ip_hostname='${ZHOSTNAME}' ORDER BY ${ZIPTORDER} ASC LIMIT 1 ;" \ | mysql -N -h ${OPENQRM_DATABASE_SERVER} -u${OPENQRM_DATABASE_USER} -p${OPENQRM_DATABASE_PASSWORD} ${OPENQRM_DATABASE_NAME})" ZDOMAIN="$(echo " SELECT ip_domain FROM ${ZIPTABLES} WHERE ip_ig_id='${ZID}' ORDER BY ${ZIPTORDER} ASC LIMIT 1 ;" \ | mysql -N -h ${OPENQRM_DATABASE_SERVER} -u${OPENQRM_DATABASE_USER} -p${OPENQRM_DATABASE_PASSWORD} ${OPENQRM_DATABASE_NAME})" if [ -z "${KONFLIKT}" ] ; then if [ -n "${ZIPADRESSE}" ] ; then echo "UPDATE ${ZIPTABLES} SET ip_eth='${ZNETIF}',ip_hostname='${ZHOSTNAME}' WHERE ip_address='${ZIPADRESSE}';" \ | mysql -h ${OPENQRM_DATABASE_SERVER} -u${OPENQRM_DATABASE_USER} -p${OPENQRM_DATABASE_PASSWORD} ${OPENQRM_DATABASE_NAME} if [ -n "$(echo "${ZIPADRESSE}"|fgrep "${DATABASENET}")" ] ; then DNSDATEI="/usr/share/openqrm/plugins/dns/etc/bind/zones/database.db" elif [ -n "$(echo "${ZIPADRESSE}"|fgrep "${EXTERNNET}")" ] ; then DNSDATEI="/usr/share/openqrm/plugins/dns/etc/bind/zones/extern.db" else echo "${ZHOSTNAME}: NIC ${ZNETIF} wurde nicht gesetzt, ABBRUCH" exit 1 fi awk '/; serial$/ {sub(";"," ");print $1,$1+1}' ${DNSDATEI} | while read ASERIAL NSERIAL do ### neuer DNS-Eintrag rein echo "${ZHOSTNAME} IN A ${ZIPADRESSE}" >> ${DNSDATEI} sed -i -e "s/${ASERIAL}/${NSERIAL}/" -e '/^$/d' ${DNSDATEI} fgrep -i serial ${DNSDATEI} done else echo "Es gibt in der Gruppe '${ZID}'/'${ZDOMAIN}' keine freie IP mehr!" fi else echo "Es gibt in der Gruppe '${ZID}'/'${ZDOMAIN}' schon den Hostnamen '${KONFLIKT}'!" fi sudo /etc/init.d/bind9 reload else echo "${0} [ig_id] [net_if] [hostname]" fi ===== /opt/bin/aus_zipgroups_austragen.sh ===== #!/bin/sh HOSTNAME="${1}" if [ -n "${1}" ] ; then . /opt/etc/zimmer_ip.cfg echo "UPDATE ${ZIPTABLES} SET ip_hostname='' WHERE ip_hostname='${HOSTNAME}';" \ | mysql -h ${OPENQRM_DATABASE_SERVER} -u${OPENQRM_DATABASE_USER} -p${OPENQRM_DATABASE_PASSWORD} ${OPENQRM_DATABASE_NAME} ### eth1 und eth2 ls /usr/share/openqrm/plugins/dns/etc/bind/zones/database.db /usr/share/openqrm/plugins/dns/etc/bind/zones/extern.db | awk -F':' '{print $1}' | sort | uniq | while read DNSDATEI do awk '/; serial$/ {sub(";"," ");print $1,$1+1}' ${DNSDATEI} | while read ASERIAL NSERIAL do ### alten DNS-Eintrag raus sed -i -e "s/${ASERIAL}/${NSERIAL}/" -e "s/${HOSTNAME}[ ]*IN[ ]*A[ ]*.*//" -e '/^$/d' ${DNSDATEI} fgrep -i serial ${DNSDATEI} done done sudo /etc/init.d/bind9 reload else echo "${0} [hostname]" fi ===== /opt/bin/zipgroups_managen.sh ===== #!/bin/sh # TEMP-Datei erzeugen DATENDATEI="$(mktemp /tmp/zipgroups.XXXXXXXXXXXX)" # TEMP-Datei füllen echo " ${1} ${2} ${3} ${4} " > ${DATENDATEI} # TEMP-Datei in die Umgebung einlesen . ${DATENDATEI} # TEMP-Datei löschen rm -f ${DATENDATEI} #------------------------------------------------------------------------------# ### GET-Daten zum eintragen # step_2=1 # appliance_name=vm-hellomobil02 # appliance_zipgeth1=1 # appliance_zipgeth2=2 ### eintragen # /opt/bin/in_zipgroups_eintragen.sh [ig_id] [net_if] [hostname] #------------------------------------------------------------------------------# ### austragen # /opt/bin/aus_zipgroups_austragen.sh [hostname] ### remove # action=remove # identifier=4,5,6,9, #------------------------------------------------------------------------------# # nur wenn es die richtige Seite war ( if [ "${step_2}" = "1" ] ; then date +'%F %T' # nur wenn der Hostname gesetzt wurde if [ -n "${appliance_name}" ] ; then # Eintrag für eth1 if [ -n "${appliance_zipgeth1}" ] ; then echo "sudo /opt/bin/in_zipgroups_eintragen.sh ${appliance_zipgeth1} eth1 ${appliance_name}" sudo /opt/bin/in_zipgroups_eintragen.sh ${appliance_zipgeth1} eth1 ${appliance_name} fi # Eintrag für eth2 if [ -n "${appliance_zipgeth2}" ] ; then echo "sudo /opt/bin/in_zipgroups_eintragen.sh ${appliance_zipgeth2} eth2 ${appliance_name}" sudo /opt/bin/in_zipgroups_eintragen.sh ${appliance_zipgeth2} eth2 ${appliance_name} fi fi elif [ "${action}" = "remove" ] ; then date +'%F %T' . /opt/etc/zimmer_ip.cfg for IDENTIFIER in $(echo "${identifier}" | sed 's/,/ /g') do for HOSTNAME in $(echo "SELECT appliance_name FROM appliance_info WHERE appliance_id='${IDENTIFIER}' ;" | mysql -N -h ${OPENQRM_DATABASE_SERVER} -u${OPENQRM_DATABASE_USER} -p${OPENQRM_DATABASE_PASSWORD} ${OPENQRM_DATABASE_NAME}) do # hier werden die ZIMMER-IP's wieder frei gegeben echo "/opt/bin/aus_zipgroups_austragen.sh ${HOSTNAME}" /opt/bin/aus_zipgroups_austragen.sh ${HOSTNAME} # hier wird die Nagios-Konfiguration gelöscht rm -vf /etc/nagios3/conf.d/${HOSTNAME}*.cfg done /etc/init.d/nagios3 reload done fi ) 2>&1 | logger ===== /opt/bin/zipgroups_zeigen_html.sh ===== #!/bin/sh HTMLCODE="$(cat | tr -s "'" '"')" NA='

New Appliance

' RE='

Requirements

' if [ "$(echo "${HTMLCODE}" | fgrep "${NA}" > /dev/null ; echo "$?")" = "0" -a "$(echo "${HTMLCODE}" | fgrep "${RE}" > /dev/null ; echo "$?")" = "0" ] ; then #------------------------------------------------------------------------------# ### es ist genau die richtige Seite ETHPULLDOWN="$( . /opt/etc/zimmer_ip.cfg IFS="|" echo " eth1 eth2 " | egrep -v '^$' | while read NETZWERKKARTE do echo "
 
' done | tr -s '"' "'")" #------------------------------------------------------------------------------# echo "${HTMLCODE}" | while read ZEILE do POSITION="$(echo "${ZEILE}" | egrep '
')" if [ -n "${POSITION}" ] ; then echo "${ETHPULLDOWN}" fi echo "${ZEILE}" done #------------------------------------------------------------------------------# else #------------------------------------------------------------------------------# ### es ist eine andere Seite echo "${HTMLCODE}" #------------------------------------------------------------------------------# fi ===== /usr/share/openqrm/web/base/server/appliance/appliance-new.php ===== Ganz oben kommen zwei Zeilen rein ($KOMMANDO), die die Auswertung der GET-Daten vornehmen, in die PHP-Datei. Diese Zeilen gibt es schon: $thisfile = basename($_SERVER['PHP_SELF']); $RootDir = $_SERVER["DOCUMENT_ROOT"].'/openqrm/base/'; require_once "$RootDir/include/user.inc.php"; require_once "$RootDir/class/image.class.php"; require_once "$RootDir/class/resource.class.php"; require_once "$RootDir/class/appliance.class.php"; require_once "$RootDir/class/kernel.class.php"; require_once "$RootDir/class/virtualization.class.php"; require_once "$RootDir/class/openqrm_server.class.php"; require_once "$RootDir/include/htmlobject.inc.php"; if(strtolower(OPENQRM_USER_ROLE_NAME) != 'administrator') { echo 'Access denied'; exit; } Wir setzen unsere beiden Zeilen direkt dhinter: $KOMMANDO = "/opt/bin/zipgroups_managen.sh"." step_2=".$_GET["step_2"]." appliance_name=".$_GET["appliance_name"]." appliance_zipgeth1=".$_GET["appliance_zipgeth1"]." appliance_zipgeth2=".$_GET["appliance_zipgeth2"]; echo shell_exec("$KOMMANDO;"); Ganz unten wird der durch PHP generierte HTML-Code ausgegeben. Hier wird die Originalzeile "echo htmlobject_tabmenu($output);" deaktiviert und dafür drei neue Zeilen eingefühgt. An dieser Stelle muss unser Filterscript (/opt/bin/zipgroups_zeigen_html.sh) zwischen geschaltet werden, damit die zwei Pull-Down-Menüs für die Zuweisung zu den Z-IP-Gruppen je "eth" erscheinen. So sieht das Ende im Original aus: Wir ändern das so ab: ===== /usr/share/openqrm/web/base/server/appliance/appliance-index.php ===== Damit die Einträge zu einer Appliance beim löschen auch aus der Z-IP-Tabelle entfernt werden, müssen wir hier noch einen Eintrag vornehmen. Diese Funktion gibt es schon: function redirect($strMsg, $currenttab = 'tab0', $url = '') { global $thisfile; if($url == '') { $url = $thisfile.'?strMsg='.urlencode($strMsg).'¤ttab='.$currenttab; } // using meta refresh here because the appliance and resourc class pre-sending header output echo ""; } Unseren Eintrag setzen wir direkt dahinter: foreach ($_GET["identifier"] as $key => $value) { $ids .= $value.","; }; $KOMMANDO = "/opt/bin/zipgroups_managen.sh"." action=".$_GET["action"]." identifier=".$ids; echo shell_exec("$KOMMANDO;"); ===== Integration ===== ==== in den openQRM-Client ==== Als erstes muss das openQRM-Client-Archiv an einem sicheren Ort ausgepackt werden: # mkdir /var/tmp/openqrm-client # cd /var/tmp/openqrm-client # tar xzf /usr/share/openqrm/web/boot-service/openqrm-client.tgz # vi usr/share/openqrm/etc/init.d/openqrm-client Wir werden hier die Funktione "openqrm_client_start" um zwei Zeilen ergänzen. Wichtig ist, das wir nur innerhalb dieser "if"-Abfrage etwas tun! if [ ! -f /etc/initrd-devices.conf ]; then # upate package manager, the boot-services may want to install additional os-deps openqrm_update_package_manager # start boot-services from enabled plugins for boot_service in $openqrm_boot_services; do openqrm_boot_service $boot_service start done fi ... } function openqrm_client_stop() { echo "Stopping openQRM-client" if [ ! -f /linuxrc ]; then # stop boot-services from enabled plugins for boot_service in $openqrm_boot_services; do openqrm_boot_service $boot_service stop done fi ... Nach unseren Änderungen sieht es so aus: if [ ! -f /etc/initrd-devices.conf ]; then rm -fr /usr/share/openqrm/plugins/* # upate package manager, the boot-services may want to install additional os-deps openqrm_update_package_manager # start boot-services from enabled plugins for boot_service in $openqrm_boot_services; do openqrm_boot_service $boot_service start done fi ... } function openqrm_client_stop() { echo "Stopping openQRM-client" if [ ! -f /linuxrc ]; then # stop boot-services from enabled plugins for boot_service in $openqrm_boot_services; do openqrm_boot_service $boot_service stop done rm -fr /usr/share/openqrm/plugins/* fi ... Am besten, soll es erst nach der "for"-Schleife gestartet werden, denn dann kommt die Nargios-Konfiguration nicht mit den zusätzlichen IP's durcheinander. Zum Schluss muss das Archiv wieder zusammen gepackt und aufgeräumt werden: # tar czf /usr/share/openqrm/web/boot-service/openqrm-client.tgz * # cd # rm -fr /var/tmp/openqrm-client In diesem Beispiel habe ich das Archiv **"/usr/share/openqrm/web/boot-service/openqrm-client.tgz"** verwendet, es ist in der Praxis aber im Dateinamen noch eine Ergänzung mit anzuführen. In dem Script **"/usr/share/openqrm/etc/templates/openqrm-linuxrc"** kann man sehen, dass das openQRM-Client-Archiv mit den Variabelen "OPENQRM_SHORT_DISTRI_NAME" und "OPENQRM_CLIENT_ARCH" ergänzt wird: - **"/usr/share/openqrm/web/boot-service/openqrm-client.x86_64.tgz"** - **"/usr/share/openqrm/web/boot-service/openqrm-client.ubuntu.x86_64.tgz"** ==== in den openqrm-client_start.sh ==== # vi /usr/share/openqrm/web/boot-service/openqrm-client_start.sh #exit if [ -x /usr/sbin/update-rc.d ] ; then echo '#!/bin/bash if [ -n "$(egrep "^auto[ /t]*bond0" /etc/network/interfaces)" ] ; then while [ ! -s /sys/class/net/bond0/address ] do . /var/openqrm/openqrm-resource.conf sleep 1 ip addr > /tmp/netz 2>&1 ping -c1 ${resource_openqrmserver} > /tmp/ping 2>&1 done fi . /var/openqrm/openqrm-resource.conf ping -c30 ${resource_openqrmserver} rm -f /root/hardwareinfos_zum_server_schicken.sh /root/netzcfg.sh wget -q -t 10 -nc -O /root/hardwareinfos_zum_server_schicken.sh "$openqrm_web_protocol://${resource_openqrmserver}/openqrm/boot-service/hardwareinfos_zum_server_schicken.sh" /bin/bash /root/hardwareinfos_zum_server_schicken.sh # hier werden die zweite und dritte Netzwerkkarte konfiguriert wget -q -t 10 -nc -O /root/netzcfg.sh $openqrm_web_protocol://$resource_openqrmserver/openqrm/boot-service/netzcfg.sh /bin/bash /root/netzcfg.sh if [ "$(/etc/init.d/openqrm-client status)" = "openQRM-client service is not running" ] ; then aptitude update aptitude -y safe-upgrade aptitude -y install screen links nmap bmon mc ethtool /etc/init.d/openqrm-client restart fi ' > /etc/rc.local /usr/sbin/update-rc.d -f rc.local remove /usr/sbin/update-rc.d rc.local defaults 99 11 fi ==== Script ins Webverzeichnis legen ==== Damit der openQRM-Client das Script auch saugen kann, muss es noch in das entsprechende Verzeichnis kopiert werden: # cp /opt/bin/netzcfg.sh /usr/share/openqrm/web/boot-service/