v-list-sys-vesta-updates 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. #!/bin/bash
  2. # info: list system updates
  3. # options: [FORMAT]
  4. #
  5. # The function checks available updates for vesta packages.
  6. #----------------------------------------------------------#
  7. # Variable&Function #
  8. #----------------------------------------------------------#
  9. # Argument definition
  10. format=${1-shell}
  11. # Includes
  12. source $VESTA/func/main.sh
  13. fields="\$NAME \$VERSION \$RELEASE \$ARCH \$UPDATED \$DESCR \$TIME \$DATE"
  14. # JSON list function
  15. json_list() {
  16. IFS=$'\n'
  17. i=1
  18. objects=$(echo -e "$data" |grep NAME |wc -l)
  19. echo "{"
  20. for str in $(echo -e "$data"); do
  21. eval $str
  22. echo -n ' "'$NAME'": {
  23. "VERSION": "'$VERSION'",
  24. "RELEASE": "'$RELEASE'",
  25. "ARCH": "'$ARCH'",
  26. "UPDATED": "'$UPDATED'",
  27. "DESCR": "'$DESCR'",
  28. "TIME": "'$TIME'",
  29. "DATE": "'$DATE'"
  30. }'
  31. if [ "$i" -lt "$objects" ]; then
  32. echo ','
  33. else
  34. echo
  35. fi
  36. ((i++))
  37. done
  38. echo '}'
  39. }
  40. # SHELL list function
  41. shell_list() {
  42. IFS=$'\n'
  43. echo "PKG VER REL ARCH UPDT DATE"
  44. echo "--- --- --- ---- ---- ----"
  45. for str in $(echo -e "$data"); do
  46. eval $str
  47. echo "$NAME $VERSION $RELEASE $ARCH $UPDATED $DATE"
  48. done
  49. }
  50. #----------------------------------------------------------#
  51. # Action #
  52. #----------------------------------------------------------#
  53. # Checking official latest version
  54. latest=$(wget -q -T 1 -t 1 http://c.vestacp.com/latest.txt -O -)
  55. # Checking installed vesta version
  56. if [ -e "/etc/redhat-release" ]; then
  57. rpm_format="VERSION='%{VERSION}'"
  58. rpm_format="$rpm_format RELEASE='%{RELEASE}'"
  59. rpm_format="$rpm_format ARCH='%{ARCH}'"
  60. rpm_format="$rpm_format UTIME='%{INSTALLTIME}'\n"
  61. eval $(rpm --queryformat="$rpm_format" -q vesta)
  62. DATE=$(date -d @$UTIME +%F)
  63. TIME=$(date -d @$UTIME +%T)
  64. else
  65. dpkg_data=$(dpkg-query -s vesta)
  66. pkg_date=$(stat -c "%Y" /var/lib/dpkg/info/vesta.list)
  67. ARCH=$(echo "$dpkg_data"|grep Architecture |cut -f 2 -d ' ')
  68. VERSION=$(echo "$dpkg_data"|grep ^Version |cut -f 2 -d ' '|cut -f 1 -d \-)
  69. RELEASE=$(echo "$dpkg_data"|grep ^Version |cut -f 2 -d ' '|cut -f 2 -d \-)
  70. DATE=$(date -d @$pkg_date +"%F")
  71. TIME=$(date -d @$pkg_date +"%T")
  72. fi
  73. UPDATED='yes'
  74. if [ ! -z "$latest" ] && [ "$latest" \> "vesta-$VERSION-$RELEASE" ]; then
  75. UPDATED='no'
  76. fi
  77. data="NAME='vesta' VERSION='$VERSION' RELEASE='$RELEASE' ARCH='$ARCH'"
  78. data="$data UPDATED='$UPDATED' DESCR='core package' TIME='$TIME' DATE='$DATE'"
  79. # Checking installed vesta-php version
  80. if [ -e "/etc/redhat-release" ]; then
  81. eval $(rpm --queryformat="$rpm_format" -q vesta-php)
  82. DATE=$(date -d @$UTIME +%F)
  83. TIME=$(date -d @$UTIME +%T)
  84. else
  85. dpkg_data=$(dpkg-query -s vesta-php)
  86. pkg_date=$(stat -c "%Y" /var/lib/dpkg/info/vesta-php.list)
  87. ARCH=$(echo "$dpkg_data"|grep Architecture | cut -f 2 -d ' ')
  88. VERSION=$(echo "$dpkg_data"|grep ^Version |cut -f 2 -d ' '|cut -f 1 -d \-)
  89. RELEASE=$(echo "$dpkg_data"|grep ^Version |cut -f 2 -d ' '|cut -f 2 -d \-)
  90. DATE=$(date -d @$pkg_date +"%F")
  91. TIME=$(date -d @$pkg_date +"%T")
  92. fi
  93. data="$data\nNAME='vesta-php' VERSION='$VERSION' RELEASE='$RELEASE'"
  94. data="$data ARCH='$ARCH' UPDATED='$UPDATED' DESCR='php interpreter'"
  95. data="$data TIME='$TIME' DATE='$DATE'"
  96. # Checking installed vesta-nginx version
  97. if [ -e "/etc/redhat-release" ]; then
  98. eval $(rpm --queryformat="$rpm_format" -q vesta-nginx)
  99. DATE=$(date -d @$UTIME +%F)
  100. TIME=$(date -d @$UTIME +%T)
  101. else
  102. dpkg_data=$(dpkg-query -s vesta-nginx)
  103. pkg_date=$(stat -c "%Y" /var/lib/dpkg/info/vesta-nginx.list)
  104. ARCH=$(echo "$dpkg_data"|grep Architecture | cut -f 2 -d ' ')
  105. VERSION=$(echo "$dpkg_data"|grep ^Version |cut -f 2 -d ' '|cut -f 1 -d \-)
  106. RELEASE=$(echo "$dpkg_data"|grep ^Version |cut -f 2 -d ' '|cut -f 2 -d \-)
  107. DATE=$(date -d @$pkg_date +"%F")
  108. TIME=$(date -d @$pkg_date +"%T")
  109. fi
  110. data="$data\nNAME='vesta-nginx' VERSION='$VERSION' RELEASE='$RELEASE'"
  111. data="$data ARCH='$ARCH' UPDATED='$UPDATED' DESCR='internal web server'"
  112. data="$data TIME='$TIME' DATE='$DATE'"
  113. # Listing data
  114. case $format in
  115. json) json_list ;;
  116. plain) plain_list ;;
  117. csv) csv_list ;;
  118. shell) shell_list |column -t;;
  119. esac
  120. #----------------------------------------------------------#
  121. # Vesta #
  122. #----------------------------------------------------------#
  123. exit