From c0bd3b1ab7417afd87f666ae53a4fdd3b10e3c4f Mon Sep 17 00:00:00 2001 From: nochill Date: Wed, 19 Feb 2025 10:07:28 +0700 Subject: [PATCH] yes --- docker/start_gitea.sh | 1 + isso/start_isso.sh | 3 + update_node_nvm.sh | 3 + wifi-stats.sh | 142 ++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 149 insertions(+) create mode 100755 docker/start_gitea.sh create mode 100755 isso/start_isso.sh create mode 100755 update_node_nvm.sh create mode 100644 wifi-stats.sh diff --git a/docker/start_gitea.sh b/docker/start_gitea.sh new file mode 100755 index 0000000..adeacf3 --- /dev/null +++ b/docker/start_gitea.sh @@ -0,0 +1 @@ +docker compose -f ~/App/gitea/docker-compose.yml up -d diff --git a/isso/start_isso.sh b/isso/start_isso.sh new file mode 100755 index 0000000..5d2355b --- /dev/null +++ b/isso/start_isso.sh @@ -0,0 +1,3 @@ +source ~/App/isso/bin/activate +isso -c ~/App/isso/isso.cfg + diff --git a/update_node_nvm.sh b/update_node_nvm.sh new file mode 100755 index 0000000..f268db3 --- /dev/null +++ b/update_node_nvm.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +nvm install node --reinstall-packages-from=$(nvm current) diff --git a/wifi-stats.sh b/wifi-stats.sh new file mode 100644 index 0000000..0b0b7ba --- /dev/null +++ b/wifi-stats.sh @@ -0,0 +1,142 @@ +#!/usr/bin/env bash + +# exit if a command fails +set -o errexit + +# exit if required variables are not set +set -o nounset + +# check for dependencies +script_commands="iw" +missing_counter=0 +for needed_command in ${script_commands}; do + if ! hash "${needed_command}" >/dev/null 2>&1; then + printf "Command not found in PATH: %s\n" "${needed_command}" >&2 + ((missing_counter++)) + fi +done +if ((missing_counter > 0)); then + printf "Minimum %d commands are missing in PATH, aborting.\n" "${missing_counter}" >&2 + exit 1 +fi + +# create function displaying usage +usage() { + echo -e "\nUsage: $0 " + exit 1 +} + +# make sure the correct number of arguments are passed; if not, output syntax and exit +if [ "$#" -ne 1 ]; then + usage +fi + +# set interface variable +interface="$1" + +# download oui database, if not present +oui_database="/tmp/oui.txt" +if [ ! -f "${oui_database}" ]; then + curl http://standards-oui.ieee.org/oui/oui.txt > "${oui_database}" +fi + +# find vendor from oui list +find_vendor () { + local vendor_id + vendor_id="$(echo "$1" | cut -d":" -f1-3 | tr "[:lower:]" "[:upper:]" | sed 's_:_-_g')" + local vendor_name + vendor_name="$(grep -m1 "${vendor_id}" "${oui_database}" | awk '{$1=$2=""; print $0}' | xargs | tr -d '[:cntrl:]')" + if [ ! -z "${vendor_name}" ]; then + echo "${vendor_name}" + else + echo "Unknown" + fi +} + +# parse out relevant information +essid="$(iw dev "${interface}" link | grep "SSID" | awk '{$1=""; print substr($0,2)}')" +bssid="$(iw dev "${interface}" link | grep "Connected" | awk '{print $3}')" +ap_vendor="$(find_vendor "${bssid}")" +rx_index="$(iw dev "${interface}" link | grep "rx bitrate" | awk '{print $5,$6}')" +tx_index="$(iw dev "${interface}" link | grep "tx bitrate" | awk '{print $5,$6}')" +rx_spacial_streams="$(iw dev "${interface}" link | grep "rx bitrate" | sed 's/short //g' | awk '{print $(NF-1),$NF}')" +tx_spacial_streams="$(iw dev "${interface}" link | grep "tx bitrate" | sed 's/short //g' | awk '{print $(NF-1),$NF}')" +client_mac="$(ip link | grep -A1 "${interface}" | grep -P "link/ether" | awk '{print $2}')" +client_vendor="$(find_vendor "${client_mac}")" +ip="$(ip -f inet addr show "${interface}" | grep -Po "inet \K[\d./,]+")" +freq="$(iw dev "${interface}" link | grep "freq" | awk '{print $2}')" +channel_width="$(iw dev "${interface}" link | grep "rx bitrate" | awk '{print $7}')" +signal="$(iw dev "${interface}" link | grep "signal" | awk '{$1=""; print substr($0,2)}')" +rx_phy_rate="$(iw dev "${interface}" link | grep "rx" | awk '{print $3}')" +rx_units="$(iw dev "${interface}" link | grep "rx" | awk '{print $4}' | sed 's/Bit/bit/')" +rx_mac_rate="$(echo "$(echo "${rx_phy_rate}" | cut -d " " -f1)*0.8" | bc)" +tx_phy_rate="$(iw dev "${interface}" link | grep "tx" | awk '{print $3}')" +tx_units="$(iw dev "${interface}" link | grep "tx" | awk '{print $4}' | sed 's/Bit/bit/')" +tx_mac_rate="$(echo "$(echo "${tx_phy_rate}" | cut -d " " -f1)*0.8" | bc)" + +# identify rx modulation +if [ "${rx_index}" == "VHT-MCS 0" ]; then + rx_modulation="BPSK" +elif [ "${rx_index}" == "VHT-MCS 1" ]; then + rx_modulation="QPSK" +elif [ "${rx_index}" == "VHT-MCS 2" ]; then + rx_modulation="PQSK" +elif [ "${rx_index}" == "VHT-MCS 3" ]; then + rx_modulation="16-QAM" +elif [ "${rx_index}" == "VHT-MCS 4" ]; then + rx_modulation="16-QAM" +elif [ "${rx_index}" == "VHT-MCS 5" ]; then + rx_modulation="16-QAM" +elif [ "${rx_index}" == "VHT-MCS 6" ]; then + rx_modulation="64-QAM" +elif [ "${rx_index}" == "VHT-MCS 7" ]; then + rx_modulation="64-QAM" +elif [ "${rx_index}" == "VHT-MCS 8" ]; then + rx_modulation="256-QAM" +elif [ "${rx_index}" == "VHT-MCS 9" ]; then + rx_modulation="256-QAM" +else + rx_modulation="n/a" +fi + +# identify tx modulation +if [ "${tx_index}" == "VHT-MCS 0" ]; then + tx_modulation="BPSK" +elif [ "${tx_index}" == "VHT-MCS 1" ]; then + tx_modulation="QPSK" +elif [ "${tx_index}" == "VHT-MCS 2" ]; then + tx_modulation="PQSK" +elif [ "${tx_index}" == "VHT-MCS 3" ]; then + tx_modulation="16-QAM" +elif [ "${tx_index}" == "VHT-MCS 4" ]; then + tx_modulation="16-QAM" +elif [ "${tx_index}" == "VHT-MCS 5" ]; then + tx_modulation="16-QAM" +elif [ "${tx_index}" == "VHT-MCS 6" ]; then + tx_modulation="64-QAM" +elif [ "${tx_index}" == "VHT-MCS 7" ]; then + tx_modulation="64-QAM" +elif [ "${tx_index}" == "VHT-MCS 8" ]; then + tx_modulation="256-QAM" +elif [ "${tx_index}" == "VHT-MCS 9" ]; then + tx_modulation="256-QAM" +else + tx_modulation="n/a" +fi + +# display formatted output +echo +echo " ESSID: ${essid}" +echo " My IP: ${ip}" +echo +echo " AP MAC: ${bssid} (${ap_vendor})" +echo " STA MAC: ${client_mac} (${client_vendor})" +echo +echo " Frequency: ${freq}MHz (${channel_width} channel)" +echo " Signal: ${signal}" +echo +echo " PHY Rx: ${rx_phy_rate}${rx_units} / Tx: ${tx_phy_rate}${tx_units} (Physical link speed)" +echo " MAC Rx: ${rx_mac_rate}${rx_units} / Tx: ${tx_mac_rate}${tx_units} (Best-case throughput)" +echo +echo " Modulation:" +echo " Rx: ${rx_modulation} / Tx: ${tx_modulation}"