#!/bin/sh -e # # rcs_cost: approximate Rackspace Cloud Server cost (USD) of the current instance # # Copyright (C) 2009-2010 Jon Bernard # Copyright (C) 2011-2014 Dustin Kirkland # # Author(s): Jon Bernard <jbernard@debian.org> # Dustin Kirkland <kirkland@byobu.org> # # Derived from byobu's ec2_cost written by Dustin Kirkland, see # Byobu's project page: http://byobu.org for more information # # This program is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the # Free Software Foundation, version 3 of the License. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General # Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program. If not, see <http://www.gnu.org/licenses/>. __rcs_cost_detail() { DETAIL=1 __rcs_cost } __rcs_cost() { # Approximate Instance Cost Basis # Memory US # 256MB $0.015/h # 512MB $0.030/h # 1024MB $0.060/h # 2048MB $0.120/h # 4096MB $0.240/h # 8192MB $0.480/h # 15872MB $0.960/h # Instance memory memory=`grep "^MemTotal:" /proc/meminfo | awk '{print $2}'` # Round memory down to the nearest multiple of 64MB memory=$((${memory} - (${memory} % (64 * 1024)))) # Apply the going rate INCREMENTS="256 512 1024 2048 4096 8192 16384 32768 65536" for X in ${INCREMENTS}; do test "$((${X} * 1024 + 65536))" -ge ${memory} && break done MEMORY_RATE=`printf "%s" "$X" | awk '{printf "%f", $1 / 256 * 15 / 1000}'` # Data Transfer Cost Basis # Incoming $0.08/GB # Outgoing $0.22/GB RX_RATE="0.08" TX_RATE="0.22" # Auto detect network interface [ -r "/proc/net/route" ] || return IF=$(tail -n1 /proc/net/route | awk '{print $1}') ifconfig_out=`LC_ALL=C /sbin/ifconfig "$IF"` # Calculate bandwidth cost tx_gb=${ifconfig_out#*RX bytes:} tx_gb=$(printf "%s" ${tx_gb%% *} | awk '{ printf "%f", $1 / 1024 / 1024 / 1024 }') rx_gb=${ifconfig_out#*TX bytes:} rx_gb=$(printf "%s" ${rx_gb%% *} | awk '{ printf "%f", $1 / 1024 / 1024 / 1024 }') network_cost=`printf "%s" "$tx_gb" "$TX_RATE" "$rx_gb" "$RX_RATE" | awk '{printf "%f %f", $1*$2, $3*$4}' | awk '{printf "%f", $1 + $2}'` # Calculate uptime cost hours=$(((`date +%s` - `stat --printf %Z /etc/hostname`) / 60 / 60 + 1)) uptime_cost=`printf "%s" "$hours" | awk "{printf \"%f\", "$MEMORY_RATE" * $hours}"` total_cost=`printf "%s %s" "$network_cost" "$uptime_cost" | awk '{printf "%.2f", $1 + $2}'` if [ "$DETAIL" = "1" ]; then echo "==========================================================" echo "Estimated cost in Rackspace Cloud Server since last reboot" echo "==========================================================" echo " Network sent: $tx_gb GB @ \$$RX_RATE/GB" echo " Network recv: $rx_gb GB @ \$$TX_RATE/GB" echo " Network cost: \$$network_cost" echo "----------------------------------------------------------" echo " Uptime: $hours hr @ \$$MEMORY_RATE/hr" echo " Uptime cost: \$$uptime_cost" echo "----------------------------------------------------------" echo "Total cost: ~\$$total_cost" echo "==========================================================" return fi [ -n "$total_cost" ] || return color K G; printf "R\$%s"; color -; color b K G; printf "%s" "$total_cost"; color -- } # vi: syntax=sh ts=4 noexpandtab
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
include | Folder | 0755 |
|
|
apport | File | 1.51 KB | 0755 |
|
arch | File | 916 B | 0755 |
|
battery | File | 4.1 KB | 0755 |
|
color | File | 1.04 KB | 0755 |
|
cpu_count | File | 1.03 KB | 0755 |
|
cpu_freq | File | 1.84 KB | 0755 |
|
cpu_temp | File | 1.79 KB | 0755 |
|
custom | File | 1.88 KB | 0755 |
|
date | File | 990 B | 0755 |
|
disk | File | 1.8 KB | 0755 |
|
disk_io | File | 2.92 KB | 0755 |
|
distro | File | 1.04 KB | 0755 |
|
ec2_cost | File | 4.21 KB | 0755 |
|
entropy | File | 1.06 KB | 0755 |
|
fan_speed | File | 1.85 KB | 0755 |
|
hostname | File | 1.3 KB | 0755 |
|
ip_address | File | 3.02 KB | 0755 |
|
load_average | File | 1.1 KB | 0755 |
|
logo | File | 3.92 KB | 0755 |
|
File | 1.31 KB | 0755 |
|
|
memory | File | 2.61 KB | 0755 |
|
menu | File | 1.61 KB | 0755 |
|
network | File | 3.1 KB | 0755 |
|
processes | File | 1.13 KB | 0755 |
|
raid | File | 1.4 KB | 0755 |
|
rcs_cost | File | 3.55 KB | 0755 |
|
reboot_required | File | 2.15 KB | 0755 |
|
release | File | 1.83 KB | 0755 |
|
services | File | 2.08 KB | 0755 |
|
session | File | 1.28 KB | 0755 |
|
swap | File | 1.75 KB | 0755 |
|
time | File | 1.06 KB | 0755 |
|
time_binary | File | 4.18 KB | 0755 |
|
time_utc | File | 960 B | 0755 |
|
trash | File | 1.13 KB | 0755 |
|
updates_available | File | 5.03 KB | 0755 |
|
uptime | File | 1.64 KB | 0755 |
|
users | File | 1.51 KB | 0755 |
|
whoami | File | 959 B | 0755 |
|
wifi_quality | File | 1.85 KB | 0755 |
|