Advertisement
Guest User

Untitled

a guest
Aug 9th, 2019
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.80 KB | None | 0 0
  1. #!/usr/bin/env bash
  2.  
  3. has() {
  4. local verbose=false
  5. if [[ $1 == '-v' ]]; then
  6. verbose=true
  7. shift
  8. fi
  9. for c in "$@"; do
  10. c="${c%% *}"
  11. if ! command -v "$c" &> /dev/null; then
  12. [[ $verbose == true ]] && err "$c not found"
  13. return 1
  14. fi
  15. done
  16. }
  17.  
  18. err() {
  19. printf '\e[31m%s\e[0m\n' "$*" >&2
  20. }
  21.  
  22. die() {
  23. (($# > 0)) && err "$*"
  24. exit 1
  25. }
  26.  
  27. cleanup() {
  28. while [[ $(wifiState) == "connecting" ]]; do
  29. ((i++))
  30. ((i > 15)) && break
  31. sleep 1
  32. done
  33.  
  34. if [[ $(wifiState) == "connected" ]]; then
  35. echo "wifi is connected!"
  36. else
  37. nmcli radio wifi off
  38. nmcli radio wifi on
  39. echo -e "Could NOT connect to wifi!\nTry again."
  40. exit 1
  41. fi
  42. }
  43.  
  44. wifiState() { nmcli device status | grep '\swifi\s' | awk '{ print $3 }'; }
  45.  
  46. has -v nmcli fzf || die "At least one dependency is missing. Exit script."
  47. trap 'cleanup' EXIT
  48.  
  49. if [[ $(wifiState) == "unavailable" ]]; then
  50. nmcli radio wifi on
  51. sleep 1
  52. if [[ $(wifiState) == "unavailable" ]]; then
  53. nmcli radio wifi on
  54. sleep 2
  55. if [[ $(wifiState) == "unavailable" ]]; then
  56. echo -e "radio wifi could not be turned on!\nTry later again."
  57. exit 1
  58. fi
  59. fi
  60. echo "The radio wifi has been turned on."
  61. fi
  62.  
  63. if [[ $(wifiState) == "disconnected" ]]; then
  64. echo "Be patient a few seconds..."
  65. sleep 5
  66. if [[ $(wifiState) == "disconnected" ]]; then
  67. nmcli device wifi list --rescan yes &> /dev/null
  68. network=$(nmcli device wifi | fzf --ansi --height=40% --reverse --cycle --inline-info --header-lines=1)
  69. if [[ -n $network ]]; then
  70. network=$(sed -r 's/^\s*\*?\s*//; s/\s*(Ad-Hoc|Infra).*//' <<< "$network")
  71. echo "connecting to \"${network}\"..."
  72. echo "$network"
  73. nmcli -a device wifi connect "$network"
  74. fi
  75. else
  76. true
  77. fi
  78. fi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement