3 #=======================================================================
5 # File ID: 29dba898-4962-11df-adc3-d5e071bed206
7 # Shortcut to check various stuff.
9 # Author: Øyvind A. Holm <sunny@sunbase.org>
10 # License: GNU General Public License version 2 or later.
11 #=======================================================================
27 " -n "$progname" -- "$@
")"
28 test "$?" = "0" ||
exit 1
34 opt_maxtemp
=$std_maxtemp
40 -h|
--help) opt_help
=1; shift ;;
41 --maxtemp) opt_maxtemp
=$2; shift 2 ;;
42 -q|
--quiet) opt_quiet
=$
(($opt_quiet + 1)); shift ;;
43 --space) opt_space
=$2; shift 2 ;;
44 -v|
--verbose) opt_verbose
=$
(($opt_verbose + 1)); shift ;;
45 --version) echo $progname $VERSION; exit 0 ;;
47 *) echo $progname: Internal error
>&2; exit 1 ;;
50 opt_verbose
=$
(($opt_verbose - $opt_quiet))
52 if test "$opt_help" = "1"; then
53 test $opt_verbose -gt 0 && { echo; echo $progname $VERSION; }
56 Usage: $progname [options] [command]
63 Define maximum acceptable temperature for "$progname temp-warn".
64 Default value: $std_maxtemp
66 Be more quiet. Can be repeated to increase silence.
68 When used with "dfull":
69 Estimate time until the free disk space reaches BYTES. This value
70 is parsed by numfmt(1) from GNU coreutils, check the man page for
71 allowed values. Examples: 10M = 10000000, 10Mi = 10485760.
73 Increase level of verbosity. Can be repeated.
75 Print version information.
77 If no command is specified, it checks that the network is up by issuing
78 a ping command until interrupted. These commands are also available:
81 Display free space of all local disks every 2nd second until
84 Run a query against pool.ntp.org to see how accurate the system
87 Display estimated time until the current disk is full based on the
88 disk usage since the script was started.
90 Display free space of all local disks, sorted by free space.
92 Follow the kernel log and display new entries immediately when they
95 Display free space of the current disk every second until
98 Display current temperature.
100 Loop and check CPU temperature. If it gets too high, create an
101 xmessage(1) window and send a warning to stderr.
107 space_val
="$(numfmt --from=auto -- $opt_space)"
108 test -z "$space_val" && {
109 echo "$progname: Invalid value in --space argument" >&2
112 test $opt_verbose -ge 1 &&
113 echo "$progname: Using --space $space_val" >&2
116 df
-h --si "$1" -P |
tail -1 |
tr -s ' ' | cut
-f 4 -d ' ' |
tr -d '\n'
120 df
-B 1 "$1" -P |
tail -1 |
tr -s ' ' | cut
-f 4 -d ' ' |
tr -d '\n'
124 mount |
grep ^
/dev
/ | cut
-f 3 -d ' ' |
sort |
while read f
; do
125 if test "$f" = "/"; then
129 echo "$f " |
rev | cut
-f 1 -d / |
rev |
tr -d '\n'
137 if test "$1" = "allspace"; then
140 curr
="$(all_free_space)"
141 if test "$curr" != "$prev"; then
143 echo -n "$(date +"%d
%H
:%M
:%S
") $curr$(tput el)"
148 elif test "$1" = "date"; then
149 ntpdate
-q pool.ntp.org
150 elif test "$1" = "df"; then
151 df
-h --si |
grep ^Filesystem
152 df
-h --si --total |
grep -e /dev
/ -e ^total |
sort -h -k4
153 elif test "$1" = "dfull"; then
155 origtime
="$(date -u +"%Y-
%m-
%d
%H
:%M
:%S.
%N
")"
156 origdf
=$
(( $
(free_space_bytes .
) - $space_val ))
162 currtime
="$(date -u +"%Y-
%m-
%d
%H
:%M
:%S.
%N
")"
164 currdf
=$
(( $
(free_space_bytes .
) - $space_val ))
166 goal "$origtime" "$origdf" 0 "$currdf" 2>/dev/null
168 dfdiff
="$(( $currdf-$origdf ))"
169 goalint
=$
(echo $goal_output |
awk '{print $1}' |
sed 's/\..*//')
170 goaldate
=$
(echo $goal_output |
awk '{print $2}')
171 goaltime
=$
(echo $goal_output |
awk '{print $3}' |
sed 's/\..*//')
172 cl_goalint
=$
(echo $goalint |
wc -L)
173 cl_goaltime
=$
(echo $goaltime |
wc -L)
174 cl_dfdiff
=$
(echo $dfdiff | commify |
wc -L)
175 seconds
=$
(echo $currsec-$origsec |
bc)
177 test $cl_goalint -gt $ml_goalint && ml_goalint
=$cl_goalint
178 test $cl_goaltime -gt $ml_goaltime && ml_goaltime
=$cl_goaltime
179 test $cl_dfdiff -gt $ml_dfdiff && ml_dfdiff
=$cl_dfdiff
181 if test "$(echo "$currdf < $prevdf" | bc)" = "1"; then
182 t_diskfree
="$(tput bold; tput setaf 1)"
183 t_diskfree_reset
="$(tput sgr0)"
184 elif test "$(echo "$currdf > $prevdf" | bc)" = "1"; then
185 t_diskfree
="$(tput bold; tput setaf 2)"
186 t_diskfree_reset
="$(tput sgr0)"
192 if test -n "$goal_output"; then
197 "%-${ml_goaltime}s "\
198 "diff: %s%-${ml_dfdiff}s%s "\
206 "$(echo $dfdiff | commify)" \
207 "$t_diskfree_reset" \
209 "$(echo $currdf | commify)" \
210 "$t_diskfree_reset" \
213 if test $seconds -gt 0; then
215 printf 'scale=0; %d/%u\n' $dfdiff $seconds |
221 printf "\\n$progname dfull: No changes yet, %s%s%s bytes free%s" \
223 "$(echo $currdf | commify)" \
224 "$t_diskfree_reset" \
230 elif test "$1" = "kern"; then
231 tail -Fq /var
/log
/kern.log
/var
/log
/syslog
/var
/log
/auth.log \
232 |
grep -v " $(hostname) CRON"
233 elif test "$1" = "space"; then
236 lastspace
=$
(free_space .
)
237 if test "$lastspace" != "$prevlast"; then
238 echo -n " $lastspace $(tput el)"
243 elif test "$1" = "temp"; then
244 temperature_file
=/sys
/devices
/virtual
/thermal
/thermal_zone
0/temp
245 if test ! -e "$temperature_file"; then
246 echo $progname: $temperature_file: File not found
>&2
247 echo $progname: Cannot
read temperature
>&2
252 echo -n $
(cat "$temperature_file")
255 elif test "$1" = "temp-warn" -o "$1" = "tw"; then
257 dispfile
="/tmp/sj_tw.$(date +%s).$$.tmp"
258 if test -e "$dispfile"; then
259 echo $progname: $dispfile: Tempfile already exists
, that
\'s spooky
>&2
263 currtemp
="$($progname temp)"
264 if test -z "$currtemp"; then
265 echo -n "$progname: Unable to read temperature, " >&2
266 echo \"$progname temp
\" returned nothing
>&2
269 if test "$currtemp" != "$prevtemp"; then
270 echo $
(date -u +"%Y-%m-%dT%H:%M:%SZ") $currtemp >>~
/log
/temp.log
271 echo -n " $currtemp $(tput el)"
274 if test $
(echo "$currtemp > $opt_maxtemp" |
bc) = "1"; then
275 grep Blimey
"$dispfile" 2>/dev
/null |
grep -q .
&& rm "$dispfile"
276 if test ! -e $dispfile; then
277 warning
="Oi! The temperature is $currtemp!"
278 xmessage
-button Blimey
-print "$warning" >"$dispfile" &
284 echo -n "$progname: $warning"
294 test -d /n900
/.
&& sudo
=sudo ||
unset sudo
296 $sudo ping 178.79.142.16
298 echo ============================================