Nächste Überarbeitung | Vorhergehende ÜberarbeitungNächste ÜberarbeitungBeide Seiten der Revision |
statusseite_aufsetzen [2013/02/27 21:59] – angelegt mwarning | statusseite_aufsetzen [2013/10/12 00:25] – mwarning |
---|
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='tun0' |
| 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 "n2n_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 |
apt-get install vnstat | apt-get install vnstat |
vnstat -u -i n2n_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 'n2n_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") |
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 (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: |
Alle Interfaces müssen als array aufgeführt sein: | Alle Interfaces müssen als array aufgeführt sein: |
$iface_list = array('tun0', 'n2n_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['n2n_bat'] = 'Freifunk'; | $iface_title['fastd_bat'] = 'Freifunk intern'; |
$iface_title['eth0'] = 'Internet'; | $iface_title['icvpn'] = 'IC-VPN'; |
| $iface_title['eth0'] = 'Netzwerkkarte'; |