| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung |
| statusseite_aufsetzen [2013/02/27 22:12] – mwarning | statusseite_aufsetzen [2023/06/04 11:32] (aktuell) – Externe Bearbeitung 127.0.0.1 |
|---|
| server.port = 80 | server.port = 80 |
| server.bind = "10.29.x.y" | server.bind = "10.29.x.y" |
| | $SERVER["socket"] == "10.29.x.y:80" {} |
| | |
| server.username = "www" | server.username = "www" |
| | |
| dst="$1" | dst="$1" |
| src="/tmp/index.html.tmp" | src="/tmp/freifunk_status" |
| | |
| | vpn_if='fastd_bat' |
| | wan_if='vpnexit' |
| | avg_time=5 |
| | |
| | |
| #write stdout to file | #write stdout to file |
| } | } |
| | |
| handle() { | vpn_tx1_bytes=`cat "/sys/class/net/$vpn_if/statistics/tx_bytes"` |
| local ifname="$1" tx_id=$2 rx_id=$3 | vpn_rx1_bytes=`cat "/sys/class/net/$vpn_if/statistics/rx_bytes"` |
| ifconfig "$ifname" &> /dev/null || return | wan_tx1_bytes=`cat "/sys/class/net/$wan_if/statistics/tx_bytes"` |
| | wan_rx1_bytes=`cat "/sys/class/net/$wan_if/statistics/rx_bytes"` |
| | |
| get() { cat "/sys/class/net/$ifname/statistics/$1"; } | sleep $avg_time |
| | |
| tx_bytes=`get tx_bytes` | vpn_tx2_bytes=`cat "/sys/class/net/$vpn_if/statistics/tx_bytes"` |
| rx_bytes=`get rx_bytes` | vpn_rx2_bytes=`cat "/sys/class/net/$vpn_if/statistics/rx_bytes"` |
| | wan_tx2_bytes=`cat "/sys/class/net/$wan_if/statistics/tx_bytes"` |
| | wan_rx2_bytes=`cat "/sys/class/net/$wan_if/statistics/rx_bytes"` |
| | |
| avg_time=5 | wan_tx_speed=$((($wan_tx2_bytes-$wan_tx1_bytes)/$avg_time)) |
| sleep $avg_time | wan_rx_speed=$((($wan_rx2_bytes-$wan_rx1_bytes)/$avg_time)) |
| tx_speed=$(((`get tx_bytes`-$tx_bytes)/$avg_time)) | vpn_tx_speed=$((($vpn_tx2_bytes-$vpn_tx1_bytes)/$avg_time)) |
| rx_speed=$(((`get rx_bytes`-$rx_bytes)/$avg_time)) | vpn_rx_speed=$((($vpn_rx2_bytes-$vpn_rx1_bytes)/$avg_time)) |
| | |
| #connections=`netstat -nt | awk '{ print $5}' | cut -d: -f1 | sed -e '/^$/d' | sort -n | uniq | wc -l` | wan_tx_str="`convert $wan_tx2_bytes` (`convert $wan_tx_speed`/s)" |
| | wan_rx_str="`convert $wan_rx2_bytes` (`convert $wan_rx_speed`/s)" |
| | vpn_tx_str="`convert $vpn_tx2_bytes` (`convert $vpn_tx_speed`/s)" |
| | vpn_rx_str="`convert $vpn_rx2_bytes` (`convert $vpn_rx_speed`/s)" |
| | |
| echo '<script type="text/javascript">' | u=`uptime` |
| echo "document.getElementById('$tx_id').innerHTML='`convert $tx_bytes` (`convert $tx_speed`/s)';" | load="${u##*:}" |
| echo "document.getElementById('$rx_id').innerHTML='`convert $rx_bytes` (`convert $rx_speed`/s)';" | u="${u%%,*}" |
| echo '</script>' | uptime="${u##*up}" |
| } | hdd=`df -h | grep '/$' | cut -d' ' -f 20` |
| | |
| echo '<html>' | echo '<html>' |
| echo '<body>' | echo '<body>' |
| | |
| echo '<h2>Statusseite des Gateways von Freifunk Bielefeld</h2>' | echo '<br /><br />' |
| echo "<center>(`date`)</center>" | echo '<h2>Statusseite des Gateways vpnx.freifunk-bielefeld.de</h2>' |
| | echo '<center>('`date`')</center>' |
| echo '<table>' | echo '<table>' |
| echo '<tr style="vertical-align:bottom;">' | echo '<tr style="vertical-align:bottom;">' |
| echo '<td id="left_top"></td>' | echo '<td id="left_top">'$wan_tx_str'</td>' |
| echo '<td id="middle_top"></td>' | echo '<td id="middle_top"><b>Load:</b>'$load'<br><b>Uptime:</b>'$uptime'</td>' |
| echo '<td id="right_top"></td>' | echo '<td id="right_top">'$vpn_rx_str'</td>' |
| echo '</tr>' | echo '</tr>' |
| echo '<tr>' | echo '<tr>' |
| echo '<td colspan=3><img src="schema.png" class="schema"></td></tr>' | echo '<td colspan=3><img src="schema.png" class="schema"></td></tr>' |
| echo '<tr style="vertical-align:top;">' | echo '<tr style="vertical-align:top;">' |
| echo '<td id="left_bottom"></td>' | echo '<td id="left_bottom">'$wan_rx_str'</td>' |
| echo '<td id="middle_bottom"></td>' | echo '<td id="middle_bottom"><b>HDD:</b> '$hdd'<br><a href="vnstat/">Traffic Statistics</a></td>' |
| echo '<td id="right_bottom"></td>' | echo '<td id="right_bottom">'$vpn_tx_str'</td>' |
| echo '</tr>' | echo '</tr>' |
| echo '</table>' | echo '</table>' |
| | |
| handle "tun0" 'left_top' 'left_bottom' | |
| handle "fastd_bat" 'right_bottom' 'right_top' | |
| | |
| | |
| u=`uptime` | |
| load="${u##*:}" | |
| u="${u%%,*}" | |
| uptime="${u##*up}" | |
| hdd=`df -h | grep '/$' | cut -d' ' -f 20` | |
| | |
| echo '<script type="text/javascript">' | |
| echo "document.getElementById('middle_top').innerHTML='<b>Load:</b>$load<br><b>Uptime:</b>$uptime';" | |
| echo "document.getElementById('middle_bottom').innerHTML='<b>HDD:</b> $hdd<br><a href="/vnstat-test/index.php">Traffic Statistics</a>';" | |
| echo '</script>' | |
| | |
| echo '</body>' | echo '</body>' |
| echo '</html>' | echo '</html>' |
| | |
| #move to final destiantion | #move to final destination |
| mv "$src" "$dst" | mv "$src" "$dst" |
| | |
| exit 0 | exit 0 |
| | |
| | Für die Statusseite werde zusätzlich die beiden Dateien {{:style.css.zip|style.css}} und {{:schema.png?linkonly|schema.png}} benötigt. |
| | |
| | cd /etc/lighttpd/www |
| | wget http://freifunk-bielefeld.de/lib/exe/fetch.php?media=style.css.zip -O style.css |
| | wget http://freifunk-bielefeld.de/lib/exe/fetch.php?media=schema.png -O schema.png |
| |
| Das obige Script generiert die Statusseite und soll alle zwei Minuten ausgeführt werden. | Das obige Script generiert die Statusseite und soll alle zwei Minuten ausgeführt werden. |
| <code>*/2 * * * * www /etc/lighttpd/generate.sh '/etc/lighttpd/www/index.html'</code> | <code>*/2 * * * * www /etc/lighttpd/generate.sh '/etc/lighttpd/www/index.html'</code> |
| |
| Das gewählte Inhaltsverzeichnis muss noch erstellt werden: | Natürlich muss das script auch ausführbar sein: |
| | |
| | chmod a+x /etc/lighttpd/generate.sh |
| | |
| | Das Verzeichnis für den Inhalt muss noch erstellt werden: |
| |
| mkdir /etc/lighttpd/www | mkdir /etc/lighttpd/www |
| /etc/init.d/lighttpd start | /etc/init.d/lighttpd start |
| | |
| *vnstat* | **vnStat** |
| | |
| | [[http://humdi.net/vnstat/|vnStat]] protokolliert den Netzwerkverkehr auf mehreren Anschlüssen und listest das Volumen je Minute/Stunde/Tag/Monat auf. |
| |
| apt-get install php5-cgi | apt-get install php5-cgi |
| vnstat -u -i fastd_bat | vnstat -u -i fastd_bat |
| vnstat -u -i tun0 | vnstat -u -i tun0 |
| | vnstat -u -i icvpn |
| | |
| In der /etc/vnstat.conf muss unter #default Interface: | In der /etc/vnstat.conf muss unter #default Interface: |
| Interface "tun0" | Interface "tun0" |
| Interface 'fastd_bat" | Interface "fastd_bat" |
| | Interface "icvpn" |
| | ergänzt werden\\ |
| In /etc/lighttpd/lighttpd.conf muss dann hinzugefügt werden: | In /etc/lighttpd/lighttpd.conf muss dann hinzugefügt werden: |
| server.modules = ("mod_fastcgi") | server.modules = ("mod_fastcgi") |
| ersetzt | ersetzt |
| |
| Nun muss nur noch das php-frontend (http://www.sqweek.com/sqweek/files/vnstat_php_frontend-1.5.1.tar.gz) in den richtigen Pfad heruntergeladen und entpackt werden und die config.php angepasst werden: | Nun muss nur noch das php-frontend in den richtigen Pfad heruntergeladen und entpackt werden und die /etc/lighttpd/www/vnstat/config.php angepasst werden: |
| | |
| | wget http://www.sqweek.com/sqweek/files/vnstat_php_frontend-1.5.1.tar.gz |
| | tar -xvzf vnstat_php_frontend-1.5.1.tar.gz |
| | mv vnstat_php_frontend-1.5.1 /etc/lighttpd/www/vnstat |
| Alle Interfaces müssen als array aufgeführt sein: | Alle Interfaces müssen als array aufgeführt sein: |
| $iface_list = array('tun0', 'fastd_bat', 'eth0'); | $iface_list = array('tun0', 'fastd_bat', 'icvpn', 'eth0'); |
| |
| und für Jedes Interface wird noch ein Titel vergeben | und für jedes Interface wird noch ein Titel vergeben |
| $iface_title['tun0'] = 'VPN'; | $iface_title['tun0'] = 'Exit-VPN'; |
| $iface_title['fastd_bat'] = 'Freifunk'; | $iface_title['fastd_bat'] = 'Freifunk intern'; |
| $iface_title['eth0'] = 'Internet'; | $iface_title['icvpn'] = 'IC-VPN'; |
| | $iface_title['eth0'] = 'Netzwerkkarte'; |