osal.sh 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. #!/bin/sh
  2. # Identifies OS type and variant
  3. # Setups variables and provides OS-agnostic wrapper functions
  4. OS_TYPE=$(grep "^ID=" /etc/os-release | cut -f 2 -d '=' | sed -e 's/^"//' -e 's/"$//')
  5. case "$OS_TYPE" in
  6. debian|Debian)
  7. OS_BASE='debian'
  8. OS_VERSION=$(cat /etc/debian_version|grep -o "[0-9]\{1,2\}"|head -n1)
  9. ;;
  10. ubuntu|Ubuntu)
  11. OS_BASE='debian'
  12. OS_VERSION="$(lsb_release -s -r)"
  13. ;;
  14. centos|CentOS|rhel|RHEL|fedora|Fedora|RedHat)
  15. OS_BASE='rhel'
  16. OS_VERSION=$(cat /etc/os-release | grep VERSION_ID | sed -e "s/VERSION_ID=//" | sed -e 's/^"//' -e 's/"$//')
  17. ;;
  18. *)
  19. OS_BASE='unknown'
  20. ;;
  21. esac
  22. OSAL_PATH="$(cd "$(dirname "$BASH_SOURCE")" >/dev/null 2>&1 ; pwd -P)"
  23. for OSAL_FILE in "osal_${OS_BASE}_based" \
  24. "osal_${OS_TYPE}" \
  25. "osal_${OS_TYPE}_${OS_VERSION}"
  26. do
  27. # Search for OS specific OSAL file and source it
  28. if [ -f "$OSAL_PATH/${OSAL_FILE}.sh" ]; then
  29. source "$OSAL_PATH/${OSAL_FILE}.sh"
  30. fi
  31. done
  32. # VAR=$(ini_get 'file' 'section' 'param' 'value')
  33. osal_ini_get() {
  34. #echo /usr/bin/crudini --get $@
  35. retval=$(/usr/bin/crudini --get $@ 2>1)
  36. if [ $? -eq 0 ]; then
  37. echo $retval
  38. fi
  39. }
  40. # ini_set 'file' 'section' 'param' 'newvalue'
  41. osal_ini_set() {
  42. if [ "$OSAL_DEBUG" ]; then
  43. echo /usr/bin/crudini --set $@
  44. fi
  45. /usr/bin/crudini --set $@
  46. }
  47. # For use in osal_kv_*
  48. sed_escape() {
  49. sed -e 's/[]\/$*.^[]/\\&/g'
  50. }
  51. # osal_kv_write path key value
  52. osal_kv_write() {
  53. osal_kv_delete "$1" "$2"
  54. echo "$2=$3" >> "$1"
  55. }
  56. # value=$(osal_kv_read path key defaultvalue)
  57. osal_kv_read() {
  58. kv_keyname=$(echo "$2" | sed_escape)
  59. if [ -f "$1" ]; then
  60. retval=$(grep "^$kv_keyname\s*=" "$1" | sed "s/^$kv_keyname\s*=\s*//" | tail -1 | sed "s/^\([\"']\)\(.*\)\1\$/\2/g")
  61. if [ "$retval" ]; then
  62. echo $retval
  63. else
  64. echo $3
  65. fi
  66. else
  67. echo $3
  68. fi
  69. }
  70. osal_kv_delete() { # path, key
  71. kv_keyname=$(echo "$2" | sed_escape)
  72. test -f "$1" && sed -i "/^${kv_keyname}\s*=.*$/d" "$1"
  73. }
  74. osal_kv_haskey() { # path, key
  75. kv_keyname=$(echo "$2" | sed_escape)
  76. test -f "$1" && grep "^${kv_keyname}\s*=" "$1" > /dev/null
  77. if [ $? -eq 0 ]; then
  78. echo 1
  79. fi
  80. }
  81. osal_kv_read_bool() {
  82. retval=$(osal_kv_read $@)
  83. if [ "${retval,,}" == "yes" ] \
  84. || [ "${retval,,}" == "true" ] \
  85. || [ "${retval,,}" == "on" ] \
  86. || [ "$retval" == "1" ]; then
  87. echo 1
  88. fi
  89. }
  90. # answer=$(osal_bool_tostring boolean_value yes_value no_value)
  91. osal_bool_tostring() {
  92. if [ "${1,,}" == "yes" ] \
  93. || [ "${1,,}" == "true" ] \
  94. || [ "${1,,}" == "on" ] \
  95. || [ "$1" == "1" ]; then
  96. if [ -n "$2" ]; then echo "$2"; else echo 'yes'; fi
  97. else
  98. if [ -n "$3" ]; then echo "$3"; else echo 'no'; fi
  99. fi
  100. }
  101. osal_execute_with_spinner() {
  102. if [ "$OSAL_DEBUG" ]; then
  103. echo "$@"
  104. $@
  105. else
  106. $@ > /dev/null 2>&1 &
  107. BACK_PID=$!
  108. spinner="/-\|"
  109. spin_i=1
  110. while kill -0 $BACK_PID > /dev/null 2>&1 ; do
  111. printf "\b${spinner:spin_i++%${#spinner}:1}"
  112. sleep 0.5
  113. done
  114. # Do a blank echo to get the \n back
  115. echo
  116. fi
  117. }