tazpanel annotate hardware.cgi @ rev 236
hardware.cgi: Fix page load (FIXME battery)
author | Christophe Lincoln <pankso@slitaz.org> |
---|---|
date | Tue Feb 28 11:58:53 2012 +0100 (2012-02-28) |
parents | 0b69a546638a |
children | 460c608c35ff |
rev | line source |
---|---|
pankso@46 | 1 #!/bin/sh |
pankso@46 | 2 # |
pankso@46 | 3 # Hardware part of TazPanel - Devices, drivers, printing |
pankso@46 | 4 # |
pankso@112 | 5 # Copyright (C) 2011 SliTaz GNU/Linux - BSD License |
pankso@46 | 6 # |
pankso@46 | 7 |
pankso@46 | 8 # Common functions from libtazpanel |
pankso@46 | 9 . lib/libtazpanel |
pankso@46 | 10 get_config |
pascal@81 | 11 header |
pankso@46 | 12 |
pankso@46 | 13 TITLE="- Hardware" |
pankso@46 | 14 |
pankso@46 | 15 # |
pankso@46 | 16 # Commands |
pankso@46 | 17 # |
pankso@46 | 18 |
pascal@81 | 19 case " $(GET) " in |
pascal@81 | 20 *\ print\ *) |
pankso@46 | 21 echo "TODO" ;; |
pascal@81 | 22 *\ modules\ *|*\ modinfo\ *) |
pankso@46 | 23 xhtml_header |
pankso@46 | 24 cat << EOT |
pankso@46 | 25 <div id="wrapper"> |
pankso@66 | 26 <h2>`gettext "Kernel modules"`</h2> |
pankso@69 | 27 <div class="float-right"> |
pankso@69 | 28 <form method="get" action="$SCRIPT_NAME"> |
pankso@69 | 29 <input type="hidden" name="modules" /> |
pankso@69 | 30 <input type="text" name="search" /> |
pankso@69 | 31 </form> |
pankso@69 | 32 </div> |
pankso@72 | 33 <p>`gettext "Manage, search or get information about the Linux kernel modules`</p> |
pankso@46 | 34 </div> |
pankso@46 | 35 EOT |
pankso@66 | 36 # Request may be modinfo output that we want in the page itself |
pascal@81 | 37 if [ -n "$(GET modinfo)" ]; then |
pascal@81 | 38 echo '<strong>' |
pascal@81 | 39 gettext "Detailed information for module: "; echo "$(GET modinfo)" |
pascal@81 | 40 echo '</strong>' |
pascal@81 | 41 echo '<pre>' |
pascal@81 | 42 modinfo $(GET modinfo) |
pascal@81 | 43 echo '</pre>' |
pascal@81 | 44 fi |
pascal@81 | 45 if [ -n "$(GET modprobe)" ]; then |
pascal@81 | 46 echo '<pre>' |
pascal@81 | 47 modprobe -v $(GET modprobe) |
pascal@81 | 48 echo '</pre>' |
pascal@81 | 49 fi |
pascal@81 | 50 if [ -n "$(GET rmmod)" ]; then |
pascal@81 | 51 echo "Removing" |
pascal@81 | 52 rmmod -w $(GET rmmod) |
pascal@81 | 53 fi |
pascal@81 | 54 if [ -n "$(GET search)" ]; then |
pascal@81 | 55 gettext "Matching result(s) for: "; echo "$(GET search)" |
pascal@81 | 56 echo '<pre>' |
pascal@81 | 57 modprobe -l | grep "$(GET search)" | while read line |
pascal@81 | 58 do |
pascal@81 | 59 name=$(basename $line) |
pascal@81 | 60 mod=${name%.ko.gz} |
pascal@81 | 61 echo "Module : <a href='$SCRIPT_NAME?modinfo=$mod'>$mod</a> " |
pascal@81 | 62 done |
pascal@81 | 63 echo '</pre>' |
pascal@81 | 64 fi |
pankso@46 | 65 cat << EOT |
pankso@46 | 66 `table_start` |
pankso@46 | 67 <tr class="thead"> |
pankso@46 | 68 <td>`gettext "Module"`</td> |
pankso@46 | 69 <td>`gettext "Size"`</td> |
pankso@46 | 70 <td>`gettext "Used"`</td> |
pankso@46 | 71 <td>`gettext "by"`</td> |
pankso@46 | 72 </tr> |
pankso@46 | 73 EOT |
pankso@46 | 74 # Get the list of modules and link to modinfo |
pankso@46 | 75 lsmod | grep ^[a-z] | while read MOD SIZE USED BY |
pankso@46 | 76 do |
pankso@46 | 77 cat << EOT |
pankso@46 | 78 <tr> |
pankso@46 | 79 <td><a href="$SCRIPT_NAME?modinfo=$MOD">$MOD</a></td> |
pankso@46 | 80 <td>$SIZE</td> |
pankso@46 | 81 <td>$USED</td> |
pankso@46 | 82 <td>`echo $BY | sed s/","/" "/g`</td> |
pankso@46 | 83 </tr> |
pankso@46 | 84 EOT |
pankso@46 | 85 done |
pankso@66 | 86 table_end ;; |
pankso@66 | 87 *) |
pascal@217 | 88 [ -n "$(GET brightness)" ] && |
pascal@217 | 89 echo -n $(GET brightness) > /proc/acpi/video/$(GET dev)/LCD/brightness |
pascal@217 | 90 |
pankso@66 | 91 # |
pankso@66 | 92 # Default to summary with mounted filesystem, loaded modules |
pankso@66 | 93 # |
pankso@66 | 94 xhtml_header |
pankso@66 | 95 cat << EOT |
pankso@66 | 96 <div id="wrapper"> |
pankso@66 | 97 <h2>`gettext "Drivers & Devices"`</h2> |
pankso@66 | 98 <p>`gettext "Manage your computer hardware`</p> |
pascal@219 | 99 </div> |
pascal@219 | 100 <div> |
pascal@219 | 101 <a class="button" href="$SCRIPT_NAME?modules"> |
pascal@219 | 102 <img src="$IMAGES/tux.png" />Kernel modules</a> |
pascal@219 | 103 </div> |
pascal@219 | 104 |
pascal@219 | 105 <div id="wrapper"> |
pascal@217 | 106 EOT |
pascal@219 | 107 if [ -n "$(ls /proc/acpi/battery/*/info 2> /dev/null)" ]; then |
pascal@219 | 108 echo "<table>" |
pascal@219 | 109 for dev in /proc/acpi/battery/*; do |
pascal@219 | 110 grep ^present $dev/info | grep -q yes || continue |
pascal@219 | 111 design=$(sed '/design capacity:/!d;s/[^0-9]*\([0-9]*\).*/\1/' < $dev/info) |
pascal@219 | 112 remain=$(sed '/remaining capacity/!d;s/[^0-9]*\([0-9]*\).*/\1/' < $dev/state) |
pascal@219 | 113 rate=$(sed '/present rate/!d;s/[^0-9]*\([0-9]*\).*/\1/' < $dev/state) |
pascal@219 | 114 full=$(sed '/last full capacity/!d;s/[^0-9]*\([0-9]*\).*/\1/' < $dev/info) |
pankso@236 | 115 # FIXME |
pankso@236 | 116 #remtime=$(( ($remain * 60) / $rate )) |
pankso@236 | 117 #rempct=$(( ($remain * 100) / $full )) |
pascal@219 | 118 cat << EOT |
pascal@219 | 119 <tr> |
pascal@219 | 120 <td><img src="$IMAGES/battery.png" /> |
pascal@219 | 121 Battery $(grep "^battery type" $dev/info | sed 's/.*: *//') |
pascal@219 | 122 $(grep "^design capacity:" $dev/info | sed 's/.*: *//') </td> |
pascal@219 | 123 <td>health $(( (100*$full)/$design))%</td> |
pascal@219 | 124 EOT |
pascal@219 | 125 if grep -qis discharging $dev/state; then |
pascal@219 | 126 cat <<EOT |
pascal@219 | 127 <td class="pct"><div class="pct" |
pascal@219 | 128 style="width: $rempct%;">charge $rempct% - $(printf "%d:%02d" $(($remtime/60)) $(($remtime%60)))</div></td> |
pascal@219 | 129 EOT |
pascal@219 | 130 else |
pascal@219 | 131 cat <<EOT |
pascal@219 | 132 <td class="pct"><div class="pct" |
pascal@219 | 133 style="width: $rempct%;">recharging $rempct%</div></td> |
pascal@219 | 134 EOT |
pascal@219 | 135 fi |
pascal@219 | 136 done |
pascal@219 | 137 echo "</table>" |
pascal@219 | 138 fi |
pascal@219 | 139 if [ -n "$(ls /proc/acpi/thermal_zone/*/temperature 2> /dev/null)" ]; then |
pascal@219 | 140 echo "Temperature: " |
pascal@219 | 141 for temp in /proc/acpi/thermal_zone/*/temperature; do |
pascal@219 | 142 sed 's/.*://' < $temp |
pascal@219 | 143 done |
pascal@219 | 144 fi |
pascal@217 | 145 if [ -n "$(ls /proc/acpi/video/*/LCD/brightness 2> /dev/null)" ]; then |
pascal@217 | 146 cat <<EOT |
pascal@217 | 147 <form method="get" action="$SCRIPT_NAME"> |
pascal@217 | 148 EOT |
pascal@217 | 149 for dev in /proc/acpi/video/*/LCD/brightness ; do |
pascal@217 | 150 name=$(echo $dev | sed 's|.*/video/||;s|/LCD/.*||') |
pascal@217 | 151 cat <<EOT |
pascal@217 | 152 <input type="hidden" name="dev" value="$name" /> |
pascal@217 | 153 $(gettext "LCD brightness") $name: <select name="brightness" onchange="submit();"> |
pascal@217 | 154 EOT |
pascal@217 | 155 awk '{ |
pascal@217 | 156 if ($1 == "levels:") |
pascal@217 | 157 for (i = 2; i <= NF; i++) level[$i] = i |
pascal@217 | 158 if ($1 == "current:") current=$2 |
pascal@217 | 159 } |
pascal@217 | 160 END { |
pascal@217 | 161 for (i in level) { |
pascal@217 | 162 s="<option value=\"" i "\"" |
pascal@217 | 163 if (current == i) s=s " selected=\"selected\"" |
pascal@217 | 164 s=s ">" i "%</option>" |
pascal@217 | 165 if (i == 100) last=s |
pascal@217 | 166 else print s |
pascal@217 | 167 } |
pascal@217 | 168 print last |
pascal@217 | 169 }' < $dev |
pascal@217 | 170 cat <<EOT |
pascal@217 | 171 </select> |
pascal@217 | 172 EOT |
pascal@217 | 173 done |
pascal@217 | 174 cat << EOT |
pascal@217 | 175 </form> |
pascal@217 | 176 EOT |
pascal@217 | 177 fi |
pascal@217 | 178 cat << EOT |
pankso@66 | 179 </div> |
pankso@152 | 180 |
pankso@152 | 181 <h3>$(gettext "Filesystem usage statistics")</h3> |
pankso@152 | 182 <pre> |
pankso@66 | 183 EOT |
pankso@152 | 184 fdisk -l | fgrep Disk |
pankso@66 | 185 echo '</pre>' |
pankso@153 | 186 # |
pankso@153 | 187 # Disk stats and management (mount, umount, heck) |
pankso@153 | 188 # |
pankso@153 | 189 table_start |
pankso@153 | 190 df_thead |
pankso@153 | 191 df -h | grep ^/dev | while read fs size used av pct mp |
pankso@153 | 192 do |
pankso@153 | 193 cat << EOT |
pankso@153 | 194 <tr> |
pankso@190 | 195 <td><img src="$IMAGES/harddisk.png" />${fs#/dev/}</td> |
pankso@153 | 196 <td>$size</td> |
pankso@153 | 197 <td>$av</td> |
pankso@153 | 198 <td class="pct"><div class="pct" |
pascal@217 | 199 style="width: $pct;">$used - $pct</div></td> |
pankso@153 | 200 <td>$mp</td> |
pankso@153 | 201 </tr> |
pankso@153 | 202 EOT |
pankso@153 | 203 done |
pankso@153 | 204 table_end |
pankso@152 | 205 echo "<h3>$(gettext "System memory")</h3>" |
pankso@152 | 206 echo '<pre>' |
pascal@219 | 207 free -m | sed \ |
pankso@152 | 208 -e s"#total.*\([^']\)#<span class='top'>\0</span>#"g \ |
pankso@152 | 209 -e s"#^[A-Z-].*:\([^']\)#<span class='sh-comment'>\0</span>#"g |
pankso@152 | 210 echo '</pre>' |
pankso@46 | 211 echo '<h3>lspci</h3>' |
pankso@46 | 212 echo '<pre>' |
pascal@155 | 213 lspci -k | sed \ |
pascal@155 | 214 -e s"#^[0-9].*\([^']\)#<span class='diff-at'>\0</span>#" \ |
pascal@155 | 215 -e s"#use: \(.*\)#use: <span class='diff-rm'>\1</span>#" |
pascal@61 | 216 echo '</pre>' |
pascal@61 | 217 echo '<h3>lsusb</h3>' |
pascal@61 | 218 echo '<pre>' |
pascal@61 | 219 lsusb |
pankso@46 | 220 echo '</pre>' |
pankso@46 | 221 ;; |
pankso@46 | 222 esac |
pankso@46 | 223 |
pankso@46 | 224 xhtml_footer |
pankso@46 | 225 exit 0 |