v-list-user-log 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. #!/bin/bash
  2. # info: list user log
  3. # options: USER [FORMAT]
  4. #
  5. # The function of obtaining the list of 100 last users commands.
  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. IFS=$'\n'
  17. i=1
  18. objects=$(echo "$logs" |wc -l)
  19. echo "{"
  20. for str in $logs; do
  21. eval $str
  22. echo -n ' "'$ID'": {
  23. "CMD": "'$CMD'",
  24. "UNDO": "'$UNDO'",
  25. "DATE": "'$DATE'",
  26. "DATE": "'$DATE'"
  27. }'
  28. if [ "$i" -lt "$objects" ]; then
  29. echo ','
  30. else
  31. echo
  32. fi
  33. ((i++))
  34. done
  35. echo '}'
  36. }
  37. shell_list() {
  38. IFS=$'\n'
  39. echo "DATE~TIME~CMD"
  40. echo "----~----~---"
  41. for str in $logs; do
  42. eval $str
  43. if [ -z "$DATE" ]; then
  44. DATE='no'
  45. fi
  46. if [ -z "$TIME" ]; then
  47. TIME='no'
  48. fi
  49. echo "$DATE~$TIME~$CMD"
  50. done
  51. }
  52. # PLAIN list function
  53. plain_list() {
  54. IFS=$'\n'
  55. for str in $logs; do
  56. eval $str
  57. echo -e "$ID\t$CMD\t$UNDO\t$TIME\t$DATE"
  58. done
  59. }
  60. # CSV list function
  61. csv_list() {
  62. IFS=$'\n'
  63. echo "ID,CMD,UNDO,TIME,DATE"
  64. for str in $logs; do
  65. eval $str
  66. echo "$ID,\"$CMD\",\"$UNDO\",$TIME,$DATE"
  67. done
  68. }
  69. #----------------------------------------------------------#
  70. # Verifications #
  71. #----------------------------------------------------------#
  72. check_args '1' "$#" 'USER [FORMAT]'
  73. is_format_valid 'user'
  74. is_object_valid 'user' 'USER' "$user"
  75. #----------------------------------------------------------#
  76. # Action #
  77. #----------------------------------------------------------#
  78. # Parsing history log
  79. logs=$(tail -n 300 $USER_DATA/history.log 2>/dev/null)
  80. case $format in
  81. json) json_list ;;
  82. plain) plain_list ;;
  83. csv) csv_list ;;
  84. shell) shell_list |column -t -s '~';;
  85. esac
  86. #----------------------------------------------------------#
  87. # Vesta #
  88. #----------------------------------------------------------#
  89. exit