v-list-user-ips 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. #!/bin/bash
  2. # info: list user ips
  3. # options: USER [FORMAT]
  4. #
  5. # The function for obtaining the list of available ip addresses.
  6. #----------------------------------------------------------#
  7. # Variable&Function #
  8. #----------------------------------------------------------#
  9. # Argument definition
  10. user=$1
  11. format=${2-shell}
  12. # Includes
  13. source $VESTA/func/main.sh
  14. # JSON list function
  15. json_list() {
  16. echo '{'
  17. ip_count=$(echo "$ips" |wc -l)
  18. i=1
  19. for IP in $ips; do
  20. source $VESTA/data/ips/$IP
  21. echo -n ' "'$IP'": {
  22. "OWNER": "'$OWNER'",
  23. "STATUS": "'$STATUS'",
  24. "NAME": "'$NAME'",
  25. "NAT": "'$NAT'"
  26. }'
  27. if [ "$i" -lt "$ip_count" ]; then
  28. echo ','
  29. else
  30. echo
  31. fi
  32. ((i++))
  33. done
  34. echo '}'
  35. }
  36. # SHELL list function
  37. shell_list() {
  38. echo "IP NAT OWNER STATUS NAME"
  39. echo "-- --- ----- ------ ---"
  40. for IP in $ips; do
  41. source $VESTA/data/ips/$IP
  42. if [ -z "$NAT" ]; then
  43. NAT='no'
  44. fi
  45. if [ -z "$NAME" ]; then
  46. NAME='no'
  47. fi
  48. echo "$IP $NAT $OWNER $STATUS $NAME"
  49. done
  50. }
  51. # PLAIN list function
  52. plain_list() {
  53. for IP in $ips; do
  54. source $VESTA/data/ips/$IP
  55. echo -e "$IP\t$OWNER\t$STATUS\t$NAME\t$NAT"
  56. done
  57. }
  58. # CSV list function
  59. csv_list() {
  60. echo "IP,OWNER,STATUS,NAME,NAT"
  61. for IP in $ips; do
  62. source $VESTA/data/ips/$IP
  63. echo "$IP,$OWNER,$STATUS,$NAME,$NAT"
  64. done
  65. }
  66. #----------------------------------------------------------#
  67. # Verifications #
  68. #----------------------------------------------------------#
  69. check_args '1' "$#" 'USER [FORMAT]'
  70. is_format_valid 'user'
  71. is_object_valid 'user' 'USER' "$user"
  72. #----------------------------------------------------------#
  73. # Action #
  74. #----------------------------------------------------------#
  75. # Defining fileds to select
  76. owner='admin'
  77. owner_ips=$(grep -A 1 -H "OWNER='$owner'" $VESTA/data/ips/*)
  78. owner_ips=$(echo "$owner_ips" |grep "STATUS='shared'")
  79. owner_ips=$(echo "$owner_ips" |cut -f 7 -d / |cut -f 1 -d -)
  80. user_ips=$(grep -H "OWNER='$user'" $VESTA/data/ips/*)
  81. user_ips=$(echo "$user_ips" |cut -f 7 -d / |cut -f 1 -d :)
  82. ips=$(echo -e "$user_ips\n$owner_ips" |sort -u |sed "/^$/d")
  83. fields='$IP $OWNER $STATUS $NAME $NAT'
  84. # Listing data
  85. case $format in
  86. json) json_list ;;
  87. plain) plain_list ;;
  88. csv) csv_list ;;
  89. shell) shell_list |column -t ;;
  90. esac
  91. #----------------------------------------------------------#
  92. # Vesta #
  93. #----------------------------------------------------------#
  94. exit