pentest-distro-builder/filesystem/etc/skel/.tmux/plugins/tmux-net-speed/scripts/helpers.sh

129 lines
2.4 KiB
Bash

#!/bin/bash -
##
# Varialbes
##
DOWNLOAD_FILE="/tmp/tmux_net_speed.download"
UPLOAD_FILE="/tmp/tmux_net_speed.upload"
get_tmux_option() {
local option=$1
local default_value=$2
local option_value="$(tmux show-option -gqv "$option")"
if [[ -z "$option_value" ]]; then
echo "$default_value"
else
echo "$option_value"
fi
}
set_tmux_option() {
local option=$1
local value=$2
tmux set-option -gq "$option" "$value"
}
get_velocity()
{
local new_value=$1
local old_value=$2
# Consts
local THOUSAND=1024
local MILLION=1048576
local vel=$(( new_value - old_value ))
local vel_kb=$(( vel / THOUSAND ))
local vel_mb=$(( vel / MILLION ))
if [[ $vel_mb != 0 ]] ; then
echo -n "$vel_mb MB/s"
elif [[ $vel_kb != 0 ]] ; then
echo -n "$vel_kb KB/s";
else
echo -n "$vel B/s";
fi
}
# Reads from value from file. If file does not exist,
# is empty, or not readable, starts back at 0
read_file()
{
local path="$1"
local fallback_val=0
# File exists and is readdable?
if [[ ! -f "$path" ]] ; then
echo $fallback_val
return 1
elif [[ ! -r "$path" ]]; then
echo $fallback_val
return 1
fi
# Does the file have content?
tmp=$(< "$path")
if [[ "x${tmp}" == "x" ]] ; then
echo $fallback_val
return 1
fi
# Now return known value
echo $tmp
}
# Update values in file
write_file()
{
local path="$1"
local val="$2"
# TODO Add error checking
echo "$val" > "$path"
}
get_interfaces()
{
local interfaces=$(get_tmux_option @net_speed_interfaces "")
if [[ -z "$interfaces" ]] ; then
for interface in /sys/class/net/*; do
interfaces+=$(echo $(basename $interface) " ");
done
fi
# Do not quote the variable. This way will handle trailing whitespace
echo -n $interfaces
}
sum_speed()
{
local column=$1
declare -a interfaces=$(get_interfaces)
local line=""
local val=0
for intf in ${interfaces[@]} ; do
line=$(cat /proc/net/dev | grep "$intf" | cut -d':' -f 2)
speed="$(echo -n $line | cut -d' ' -f $column)"
let val+=${speed:=0}
done
echo $val
}
is_osx() {
[ $(uname) == "Darwin" ]
}
is_cygwin() {
command -v WMIC > /dev/null
}
command_exists() {
local command="$1"
type "$command" >/dev/null 2>&1
}