-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathnetspeed.sh
More file actions
executable file
·76 lines (57 loc) · 1.77 KB
/
netspeed.sh
File metadata and controls
executable file
·76 lines (57 loc) · 1.77 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#!/bin/bash
# This shell script shows the network speed, both received and transmitted.
# Usage: net_speed.sh interface
# e.g: net_speed.sh eth0
# Global variables
interface=$1
received_bytes=""
old_received_bytes=""
transmitted_bytes=""
old_transmitted_bytes=""
# This function parses /proc/net/dev file searching for a line containing $interface data.
# Within that line, the first and ninth numbers after ':' are respectively the received and transmited bytes.
get_bytes()
{
line=$(cat /proc/net/dev | grep $interface | cut -d ':' -f 2 | awk '{print "received_bytes="$1, "transmitted_bytes="$9}')
eval $line
}
# Function which calculates the speed using actual and old byte number.
# Speed is shown in KByte per second when greater or equal than 1 KByte per second.
# This function should be called each second.
get_velocity()
{
value=$1
old_value=$2
let vel=$value-$old_value
let velKB=$vel/1024
if [ $velKB != 0 ];
then
echo -n "$velKB KB/s";
else
echo -n "$vel B/s";
fi
}
# Gets initial values.
get_bytes
old_received_bytes=$received_bytes
old_transmitted_bytes=$transmitted_bytes
# Shows a message and waits for one second.
echo "Starting...";
sleep 1;
echo "";
# Main loop. It will repeat forever.
while true;
do
# Get new transmitted and received byte number values.
get_bytes
# Calculates speeds.
vel_recv=$(get_velocity $received_bytes $old_received_bytes)
vel_trans=$(get_velocity $transmitted_bytes $old_transmitted_bytes)
# Shows results in the console.
echo -en "$interface DOWN:$vel_recv\tUP:$vel_trans\r"
# Update old values to perform new calculations.
old_received_bytes=$received_bytes
old_transmitted_bytes=$transmitted_bytes
# Waits one second.
sleep 1;
done