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 &amp; 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&nbsp;$rempct%&nbsp;-&nbsp;$(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&nbsp;$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&nbsp;-&nbsp;$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