diff --git a/usr/lib/byobu/cpu_freq b/usr/lib/byobu/cpu_freq index b097a054..61c89da1 100755 --- a/usr/lib/byobu/cpu_freq +++ b/usr/lib/byobu/cpu_freq @@ -29,7 +29,7 @@ __cpu_freq() { read hz < /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq fpdiv $hz "1000000" 1 # 1Ghz freq="$_RET" - else + elif [ -r "/proc/cpuinfo" ]; then if egrep -q -s -i -m 1 "^cpu MHz|^clock" /proc/cpuinfo; then freq=$(egrep -i -m 1 "^cpu MHz|^clock" /proc/cpuinfo | awk -F"[:.]" '{ printf "%01.1f", $2 / 1000 }') else @@ -38,6 +38,9 @@ __cpu_freq() { freq=$(egrep -i -m 1 "^bogomips" /proc/cpuinfo | awk -F"[:.]" '{ print $2 }') freq=$(printf "%s %s" "$freq" "$count" | awk '{printf "%01.1f\n", $1/$2/1000}') fi + elif hz=$(sysctl -n hw.cpufrequency 2>/dev/null); then + fpdiv $hz "1000000000" 1 # 1Ghz + freq="$_RET" fi [ -n "$freq" ] || return color b c W; printf "%s" "$freq"; color -; color c W; printf "%s" "$ICON_GHz"; color -- diff --git a/usr/lib/byobu/date b/usr/lib/byobu/date index 46851675..b37ba31d 100755 --- a/usr/lib/byobu/date +++ b/usr/lib/byobu/date @@ -25,14 +25,14 @@ __date_detail() { __date() { case "$BYOBU_BACKEND" in - tmux) - date +"%Y-%m-%d " - ;; screen) bd=$(date "+%m%d") [ "$bd" = "0320" ] && msg="$(printf "%s" SGFwcHkgQmlydGhkYXkgU2NyZWVuIC0tIGh0dHA6Ly9iaXQubHkvc2NyZWVuLWJkYXkK | base64 -di)" && $BYOBU_BACKEND -X -S "byobu" at "*" echo "[$msg]" color none; printf "\005Y-\005m-\005d"; color -- ;; + tmux|*) + date +"%Y-%m-%d " + ;; esac } diff --git a/usr/lib/byobu/entropy b/usr/lib/byobu/entropy index e97f882c..719ab782 100755 --- a/usr/lib/byobu/entropy +++ b/usr/lib/byobu/entropy @@ -19,13 +19,15 @@ # along with this program. If not, see . __entropy_detail() { - cat /proc/sys/kernel/random/entropy_avail + cat /proc/sys/kernel/random/entropy_avail 2>/dev/null } __entropy() { - local e=$(cat /proc/sys/kernel/random/entropy_avail) - [ -n "$e" ] || return - color K Y; printf "e%s" "$e"; color -- + if [ -r /proc/sys/kernel/random/entropy_avail ]; then + local e=$(cat /proc/sys/kernel/random/entropy_avail) + [ -n "$e" ] || return + color K Y; printf "e%s" "$e"; color -- + fi } # vi: syntax=sh ts=4 noexpandtab diff --git a/usr/lib/byobu/include/shutil b/usr/lib/byobu/include/shutil index 6ed416fa..c18831fc 100755 --- a/usr/lib/byobu/include/shutil +++ b/usr/lib/byobu/include/shutil @@ -301,7 +301,7 @@ get_network_interface() { [ "$Mask" = "00000000" ] && break done < /proc/net/route _RET="$Iface" - elif $BYOBU_TEST route >/dev/null; then + elif $BYOBU_TEST route >/dev/null 2>&1; then # Route command on path _RET=$(route get default|grep interface:|awk '{print $2}') elif [ -x "/sbin/route" ]; then diff --git a/usr/lib/byobu/ip_address b/usr/lib/byobu/ip_address index fcddd6c4..4fa564a8 100755 --- a/usr/lib/byobu/ip_address +++ b/usr/lib/byobu/ip_address @@ -21,8 +21,10 @@ __ip_address_detail() { [ -x /sbin/ifconfig ] && /sbin/ifconfig - /sbin/ip -4 addr list - /sbin/ip -6 addr list + if [ -x /sbin/ip ]; then + /sbin/ip -4 addr list + /sbin/ip -6 addr list + fi } __ip_address() { @@ -44,7 +46,12 @@ __ip_address() { sleep 0.02 else # Background an update - LC_ALL=C /sbin/ip -6 addr list dev "$interface" scope global >"$cache" 2>/dev/null & + if [ -x /sbin/ip ]; then + LC_ALL=C /sbin/ip -6 addr list dev "$interface" scope global >"$cache" 2>/dev/null & + elif $BYOBU_TEST ifconfig >/dev/null 2>&1; then + LC_ALL=c ifconfig "$interface" | grep "inet6 " | awk '{print $2}' | sed "s/%.*//" >"$cache" 2>/dev/null & + + fi fi [ -s "$cache" ] && read ipaddr < "$cache" # Print 'None' if we have no global address @@ -63,9 +70,13 @@ __ip_address() { sleep 0.02 [ -s "$cache" ] && read ipaddr < "$cache" else - ipaddr=$(LC_ALL=C /sbin/ip -4 addr list dev "$interface" scope global 2>/dev/null) - ipaddr=${ipaddr#* inet } - ipaddr=${ipaddr%%/*} + if [ -x /sbin/ip ]; then + ipaddr=$(LC_ALL=C /sbin/ip -4 addr list dev "$interface" scope global 2>/dev/null) + ipaddr=${ipaddr#* inet } + ipaddr=${ipaddr%%/*} + elif $BYOBU_TEST ifconfig >/dev/null 2>&1; then + ipaddr=$(ifconfig "$interface" | grep "inet " | awk '{print $2}') + fi fi ;; esac diff --git a/usr/lib/byobu/load_average b/usr/lib/byobu/load_average index 143c5aea..c1eeb239 100755 --- a/usr/lib/byobu/load_average +++ b/usr/lib/byobu/load_average @@ -1,4 +1,4 @@ -#!/bin/sh -e +#!/bin/sh # # load_average: grab the current load average # @@ -24,7 +24,11 @@ __load_average_detail() { } __load_average() { - read one five fifteen other < /proc/loadavg + if [ -r "/proc/loadavg" ]; then + read one five fifteen other < /proc/loadavg + else + one=$(uptime | sed -e "s/.*://" | awk '{print $1}') + fi [ -n "$one" ] || return color Y k; printf "$one"; color -- } diff --git a/usr/lib/byobu/memory b/usr/lib/byobu/memory index 79c779d6..15cf39ca 100755 --- a/usr/lib/byobu/memory +++ b/usr/lib/byobu/memory @@ -26,15 +26,28 @@ __memory() { __memory() { local free="" total="" buffers="" cached="" local kb_main_used=0 buffers_plus_cached=0 fo_buffers=0 fo_cached=0 - while read tok val unit; do - case "$tok" in - MemTotal:) total=${val};; - MemFree:) free=${val};; - Buffers:) buffers=${val};; - Cached:) cached=${val};; - esac - [ -n "${free}" -a -n "${total}" -a -n "${buffers}" -a -n "${cached}" ] && break; - done < /proc/meminfo + if [ -r /proc/meminfo ]; then + while read tok val unit; do + case "$tok" in + MemTotal:) total=${val};; + MemFree:) free=${val};; + Buffers:) buffers=${val};; + Cached:) cached=${val};; + esac + [ -n "${free}" -a -n "${total}" -a -n "${buffers}" -a -n "${cached}" ] && break; + done < /proc/meminfo + elif $BYOBU_TEST vm_stat >/dev/null 2>&1; then + # MacOS support + # calculation borrowed from http://apple.stackexchange.com/a/48195/18857 + free_blocks=$(vm_stat | grep free | awk '{ print $3 }' | sed 's/\.//') + inactive_blocks=$(vm_stat | grep inactive | awk '{ print $3 }' | sed 's/\.//') + speculative_blocks=$(vm_stat | grep speculative | awk '{ print $3 }' | sed 's/\.//') + free=$((($free_blocks+speculative_blocks)*4)) + inactive=$(($inactive_blocks*4)) + total=$((($free+$inactive))) + buffers=0 + cached=0 + fi kb_main_used=$(($total-$free)) buffers_plus_cached=$(($buffers+$cached)) # "free output" buffers and cache (output from 'free') diff --git a/usr/lib/byobu/menu b/usr/lib/byobu/menu index 57056e47..10c62128 100755 --- a/usr/lib/byobu/menu +++ b/usr/lib/byobu/menu @@ -35,7 +35,7 @@ __menu() { else key="F9" fi - text=$(gettext "Menu") + text=$(gettext "Menu" 2>/dev/null) || text="Menu" color k w; printf "%s:<" "$text"; color -; color b k w; printf "%s" "$key"; color k w; printf ">" } diff --git a/usr/lib/byobu/processes b/usr/lib/byobu/processes index 9a8ed870..ef54d022 100755 --- a/usr/lib/byobu/processes +++ b/usr/lib/byobu/processes @@ -20,11 +20,16 @@ # along with this program. If not, see . __processes_detail() { - ps -ejH + ps -ej } __processes() { - local count=$(ls -d /proc/[0-9]* 2>/dev/null| wc -l) + local count= + if [ -r /proc ]; then + count=$(ls -d /proc/[0-9]* 2>/dev/null| wc -l) + else + count=$(ps -ef | wc -l | awk '{print $1}') + fi [ -n "$count" ] || return color b y w; printf "%s" "$count"; color -; color y w; printf "&"; color -- } diff --git a/usr/lib/byobu/time b/usr/lib/byobu/time index 512af6f8..03f93c69 100755 --- a/usr/lib/byobu/time +++ b/usr/lib/byobu/time @@ -25,12 +25,12 @@ __time_detail() { __time() { case "$BYOBU_BACKEND" in - tmux) - date +"%H:%M:%S" - ;; screen) printf "\0050c:\005s" ;; + tmux|*) + date +"%H:%M:%S" + ;; esac } diff --git a/usr/lib/byobu/time_utc b/usr/lib/byobu/time_utc index 05a42b79..515c1fea 100755 --- a/usr/lib/byobu/time_utc +++ b/usr/lib/byobu/time_utc @@ -25,7 +25,7 @@ __time_utc_detail() { __time_utc() { d=$(date -u +%H:%M) - color invert; printf "%s UTC" "$d"; color -- + color invert; printf "%sUTC" "$d"; color -- } # vi: syntax=sh ts=4 noexpandtab diff --git a/usr/lib/byobu/uptime b/usr/lib/byobu/uptime index 6adf8c85..c655b62e 100755 --- a/usr/lib/byobu/uptime +++ b/usr/lib/byobu/uptime @@ -26,17 +26,21 @@ __uptime_detail() { } __uptime() { - local u idle str - read u idle < /proc/uptime - u=${u%.*} - if [ "$u" -gt 86400 ]; then - str="$(($u / 86400))d$((($u % 86400) / 3600))h" - elif [ "$u" -gt 3600 ]; then - str="$(($u / 3600))h$((($u % 3600) / 60))m" - elif [ "$u" -gt 60 ]; then - str="$(($u / 60))m" + local u= idle= str= + if [ -r /proc/uptime ]; then + read u idle < /proc/uptime + u=${u%.*} + if [ "$u" -gt 86400 ]; then + str="$(($u / 86400))d$((($u % 86400) / 3600))h" + elif [ "$u" -gt 3600 ]; then + str="$(($u / 3600))h$((($u % 3600) / 60))m" + elif [ "$u" -gt 60 ]; then + str="$(($u / 60))m" + else + str="${u}s" + fi else - str="${u}s" + str=$(uptime | sed -e "s/.* up *//" -e "s/ days, /d/" -e "s/:/h/" -e "s/,.*/m/") fi [ -n "$str" ] || return color w b; printf "%s" "${str}"; color -- diff --git a/usr/lib/byobu/users b/usr/lib/byobu/users index c2fe3871..1a698c39 100755 --- a/usr/lib/byobu/users +++ b/usr/lib/byobu/users @@ -26,13 +26,13 @@ __users_detail() { } __users() { - local count + local count=0 if [ "$USERS_DISTINCT" = "1" ]; then count=$(pgrep -fl 'sshd:.*@' | cut -f3 -d\ | cut -f1 -d@ | sort -u | wc -l) else # Note: we'd like to use pgrep -c, however, this isn't available in # busybox and some distro's pgrep (and it doesn't exit non-zero). - count=$(pgrep -f "^sshd:.*@" | wc -l) || return + count=$(pgrep -f "^sshd:.*@|^/usr/sbin/sshd -i" | wc -l) || return fi if [ $count -gt 0 ]; then color b w r; printf "%d" "$count"; color -; color w r; printf "#"; color --