v-list-user-log 2.3 KB

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