Front / Back (click to flip)
Click card to view front/back
Raw Script
#!/usr/bin/env bash
set -euo pipefail;bash -c $'set -e\nblun=$\'\\033[1;34m\'\ngruv=$\'\\033[1;32m\'\nyenk=$\'\\033[1;33m\'\nrakk=$\'\\033[1;31m\'\nzclr=$\'\\033[0m\'\ntools=(fortune-mod cowsay cowsay-off xcowsay figlet toilet cmatrix oneko espeak libaa-bin bb pv aview x11-apps sysvbanner)\nttyp="/dev/tty"\n[[ -r "$ttyp" && -w "$ttyp" ]] || ttyp=""\noutp(){ [[ -n "$ttyp" ]] && printf "%b" "$1" >"$ttyp" || printf "%b" "$1"; }\ninpt(){ local t=""; [[ -n "$ttyp" ]] && IFS= read -r t <"$ttyp" || IFS= read -r t; printf "%s" "$t"; }\nclear_screen(){ outp $\'\\033[2J\\033[H\'; }\npause(){ outp "\\nEnter to continue... "; inpt >/dev/null; }\napt_cmd(){ command -v apt-get >/dev/null 2>&1 || { printf \'%s\' ""; return; }; [[ "$(id -u)" -eq 0 ]] && printf \'%s\' "apt-get" || printf \'%s\' "sudo apt-get"; }\nis_installed(){\n command -v "$1" >/dev/null 2>&1 && return 0\n dpkg -s "$1" >/dev/null 2>&1 && return 0\n return 1\n}\ninstall_one_by_index(){\n ap="$(apt_cmd)"\n [[ -z "$ap" ]] && { outp "\\n${rakk}apt not available${zclr}\\n"; pause; return; }\n local idx="$1"\n local tool="${tools[$idx]}"\n outp "\\n${yenk}Installing${zclr} $tool\\n"\n $ap -y install "$tool" && outp "${gruv}Done${zclr}\\n" || outp "${rakk}Failed${zclr}\\n"\n pause\n}\nlist_tools(){\n while :; do\n clear_screen\n outp "${blun}LIST TOOLS${zclr}\\n\\n"\n i=1\n for t in "${tools[@]}"; do\n if is_installed "$t"; then\n outp " $i) ${gruv}OK${zclr} $t\\n"\n else\n outp " $i) ${rakk}MISS${zclr} $t\\n"\n fi\n i=$((i+1))\n done\n outp "\\nSelect number to install, or press Enter to go back: "\n sel="$(inpt)"\n [[ -z "$sel" ]] && return\n if [[ "$sel" =~ ^[0-9]+$ ]] && (( sel>=1 && sel<=${#tools[@]} )); then\n idx=$((sel-1))\n tool="${tools[$idx]}"\n if is_installed "$tool"; then\n outp "\\n${gruv}Already installed${zclr}: $tool\\n"\n pause\n else\n install_one_by_index "$idx"\n fi\n else\n outp "\\n${rakk}Invalid selection${zclr}\\n"\n pause\n fi\n done\n}\ninstall_missing(){\n clear_screen\n ap="$(apt_cmd)"\n [[ -z "$ap" ]] && { outp "${rakk}apt not available${zclr}\\n"; pause; return; }\n miss=()\n for t in "${tools[@]}"; do is_installed "$t" || miss+=("$t"); done\n if (( ${#miss[@]} == 0 )); then outp "${gruv}Nothing missing${zclr}\\n"; pause; return; fi\n outp "${blun}INSTALL ALL MISSING${zclr}\\n\\n"\n for t in "${miss[@]}"; do outp "${yenk}Installing${zclr} $t\\n"; $ap -y install "$t" || true; done\n outp "\\n${gruv}Done${zclr}\\n"\n pause\n}\ninstall_all(){\n clear_screen\n ap="$(apt_cmd)"\n [[ -z "$ap" ]] && { outp "${rakk}apt not available${zclr}\\n"; pause; return; }\n outp "${blun}INSTALL ALL${zclr}\\n\\n"\n for t in "${tools[@]}"; do outp "${yenk}Installing${zclr} $t\\n"; $ap -y install "$t" || true; done\n outp "\\n${gruv}All done${zclr}\\n"\n pause\n}\nupdate_system(){\n clear_screen\n ap="$(apt_cmd)"\n [[ -z "$ap" ]] && { outp "${rakk}apt not available${zclr}\\n"; pause; return; }\n outp "${blun}SYSTEM UPDATE${zclr}\\n\\n"\n $ap update && $ap -y upgrade\n pause\n}\nwhile :; do\n clear_screen\n outp "${blun}MENU${zclr}\\n\\n"\n outp " 1) List Tools\\n"\n outp " 2) Install All Missing\\n"\n outp " 3) Install All\\n"\n outp " 4) Update System\\n"\n outp " q) Quit\\n\\n"\n outp "> "\n sel="$(inpt)"\n case "$sel" in\n 1) list_tools ;;\n 2) install_missing ;;\n 3) install_all ;;\n 4) update_system ;;\n q|Q) clear_screen; exit 0 ;;\n *) outp "${rakk}Invalid${zclr}\\n"; pause ;;\n esac\ndone\n'
QR Payload
bash -c "$(echo H4sIAAAAAAAAA81WbW/bNhD+vl9xc9XGWqcmTvpldRUsQNPOW15WOP0wRJlBS7RDRKZUkXKSut5v3x1JyZKcBNuAYTNgWLo73stzzx397NvdUhW7UyF3uVzClKnrbxTXEPAyg1zkfMZEOiQxBDF4O1YXyWlaytCLdqJo7+DgcjA8eL3AFzkvymVLvG/E91zetMQHRlywm7Z4YMRf4rTYiPeMTGdZqsL+LCt0KXmwyBKIs1vF7t1PkM1mcOdEMzFPMU+dCfqJF0wX4g4yyW8y4Crn7AZSMWUswLJhOoV8CWwp+C3cDQYBy3MF6l4tp0xKXvgYW9/nYW834ctdfOxF8vISggJ6Hil68OIFBLf129UVfP0K9giaZqXO+/4K6IhsGuGpvBBSz6D3fNpDzaAHh5UePXSVQ1hHUshck7c0i1kKGiMMH/Q8ej8OoeAsoTw1vG34bauGmziK4mgbJ045KyYqLjiXFI+qgLoj+z/b35+iHWOds1Lx2qwXRfJYao7eM2yO1EKW/NWrV4CuKX84NEjKMk3NaZbrSbxI6HycLRZMYmbYj1wHc940hv3DFwOqYFXlHO08V9EOEAgF12Uh0Z/Bo+f1BXop/R5y9TPstfGujrkQTbQrlSqTrErBIa8mQirN0pRTqpGEZra2e51UMaJNC/bIPMlv5hCov2TrngeRNE03cSfI38n0HtNI+J1LgSHJvL5D0O+RiOjwBYOwmgyNvngrGrk1HgCZaSQ9Djebptxb0cyt0QKrNe1sQEpeLeFEchdS+hsJjSWKVmY8Lz00uFobdSMkDf96ZIsQcu5igUdnKCKZY7oQ3IMrlYiISjNa1pG3os2yfocYNHKlzlV6U9h7rIcnDQvybeoxSKZC6YlJ1eF3e4328GYISUav2NMG8a2k8k8Lb30yGl/Axfn5yXgTowoDIMKBfcAthVMnaCodMj8iLJsoaDqDJqPc5OnrKuomMnjCB1f++S8VeIjeJi4AT6nCBw8aXE5H4/EG9+bJmahTCr1+X7wc+L6VJIh1EwI8NeYpj5E65WJqx9sV8D1gwXnBlYJ68ucZXibxzRtwoRQnovRpA/hOVFEVVRVXLekcnDM7y0Yd/gG/X+4FP1y99Jxpv08+D0MzPPj0NvRWz2q0wffbeBJ3sUA0DOoS4XH+PtIkYuXDfTJUN106Smm91mSu+fimTXn7ceR8qI0PzT3mgDluda95sDvsI7lkKa5DZZonMtkZj04W1qVtfmP5LIRSOLzV6uuMyd/aQ/94CVEOYd/07vEJ254r2hJ09GXYp1d/WFMbG4wsQtqQ2rAmDPG2qKjT3j1nmb5GBMAh8VS2FsPW5hidjS+OTk6AvjSNo7MP2yukWVWVki2q8vXoLrV5bK9RU70uSr6pusvXzlJtr8yq//j9T3v/GJhPg9ihxr+J4hFaJk8hWeYJ03yC/yw1X/x/sBz/Nr44PoVPv747ujjeRpOwsJlTaIdMmc8LlvB2fZ27tFtaK+jp8dmn7Vju3hr4cIIXNVxQ8zq6fR9c34AAP7Wz2DE6aBl1lK99+GTrGZtOdNSfffhYCr2V1aG9x7ZusZgpXt1Rwl0KWMDmnwYMh1aKqXeWaa062Kgo6UqMqbZIUys+f/3otwAeAr8TGldXZfGd3yaJuwS2qeFOcMXiSFpu7/wJ2/Ng8xQOAAA= | base64 -d | gunzip)"