Guest User

Untitled

a guest
Jul 19th, 2018
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.20 KB | None | 0 0
  1. #!/bin/bash
  2. #Autor: Fitorec
  3. #Descripción:
  4. # Descarga información de un proyecto administrado con SVN, Actualiza el proyecto SVN,
  5. # muestra la información a partir de parametros, ideal para mostrar con el conky por tal
  6. # motivo arranca el conky con un archivo de configuración.
  7.  
  8. # Lista de opciones:
  9. # -start: inicia el conky.
  10. # -update: Actualiza los archivos.
  11. # -revision: Muestra el número de la ultima revisión.
  12. # -author: Muestra el autor de la ultima revisión.
  13. # -date: Muestra la fecha de la ultima revisión.
  14. # -msg N: Imprime en un párrafo de longitud N mensaje de la ultima revisión.
  15.  
  16. # lista de errores:
  17. # ERROR 1: Falta de argumentos
  18. # ERROR 2: Falta del argumento longitud(N) para mostrar el mensaje(opcion -msg).
  19. # ERROR 3: La opción es incorrecta
  20. #
  21.  
  22.  
  23. #======================================CONFIGURAME========================================
  24. #CONFIGURAR las 2 variables a utilizar:
  25. #Ruta del directorio SVN donde se encuentra mi copia del proyecto
  26. export svnPath='/var/www/proyectos/proyectoX/'
  27. #Ruta donde se va a descargar el archivo
  28. export xmlfile='/home/fitorec/.config/conky/datos/proyectoX.xml'
  29. #Ruta de mi archivo de configuracion del conky.
  30. export conkyrc='/home/fitorec/.config/conky/proyectoXconkyrc'
  31.  
  32.  
  33.  
  34. #=======================================REVISAME==========================================
  35. #De aquí en adelante se recomienda no modificar, pero si echarle un ojo ';¬D
  36. #opciones en general
  37. function msg_opciones {
  38. echo Lista de opciones
  39. echo ========================================================
  40. echo -help: Muestra este menu.
  41. echo -start: inicia el conky.
  42. echo -update: Actualiza los archivos.
  43. echo -revision: Muestra el número de la ultima revisión.
  44. echo -author: Muestra el autor de la ultima revisión.
  45. echo -date: Muestra la fecha de la ultima revisión.
  46. echo -msg N: Imprime en un párrafo de longitud N mensaje de la ultima revisión.
  47. }
  48. #La opcion start y update descargan la información a mostrar en el
  49. # archivo $xmlfile esta información tiene la siguiente forma forma:
  50. #---------------- archivo $xmlfile ----------------------------------
  51. #<?xml version="1.0"?>
  52. #<log>
  53. #<logentry
  54. # revision="139">
  55. #<author>fitorec</author>
  56. #<date>2011-01-03T06:28:34.412370Z</date>
  57. #<msg>se mejoro el script del archivo de traducción</msg>
  58. #</logentry>
  59. #</log>
  60. #
  61.  
  62. #Más Funciones a utilizar.
  63. #===============
  64. #Actualiza el repositorio del proyecto.
  65. function update {
  66. #Revisamos si existe conexión a Internet
  67. ping google.com -c 2
  68. if [ $? -eq 0 ]
  69. then
  70. #realizamos una actualización del proyecto.
  71. svn update $svnPath
  72. #Descarga la información del ultimo cambio en un archivo XML
  73. svn log -r HEAD --xml -g $svnPath > $xmlfile
  74. fi
  75. }
  76. #Muestra el número del ultimo cambio.
  77. function revision {
  78. cat $xmlfile | grep -E "\s*revision\=\"[0-9]*\">" | sed -r "s/\s*revision\=\"([0-9]*)\">/\1/"
  79. }
  80. #Muestra el autor del ultimo cambio
  81. function author {
  82. cat $xmlfile | grep -E "^<author>.*$" | sed -r "s/<author>(.*)<\/author>/\1/"
  83. }
  84.  
  85. #obtenemos la fecha del ultimo cambio:
  86. function date {
  87. cat $xmlfile | grep -E "^<date>.*$" | sed -r "s/^<date>([0-9]{4}-[0-9]{2}-[0-9]{2}).*([0-9]{2}:[0-9]{2}).*<\/date>$/\1 \2/"
  88. }
  89. #Muestra el msg en un parrafo de longitud $1 mensaje de la ultima revisión.
  90. function msg {
  91. msg=`cat $xmlfile | grep -E "^<msg>.*$" | sed -r "s/<msg>(.*)<\/msg>/\1/"`
  92. while [ "$msg" != "" ];
  93. do
  94. echo $msg | cut -c 1-$1
  95. msg=`echo $msg | cut -c $1-`
  96. done;
  97. }
  98. #Actualiza el proyecto e inicia el conky
  99. function start {
  100. #primero nos esperamos(30s) un rato para que la máquina se inicie y se conecte a Internet.
  101. sleep 30
  102. update
  103. #inicializamos el conky.
  104. conky -c $conkyrc
  105. }
  106. #inicio de la lógica de control
  107. ########################################################################################3
  108. #si no existe argumentos error!
  109. if [ $# -eq 0 ]
  110. then
  111. echo "ERROR 1: debe insertar un argumento!."
  112. msg_opciones
  113. exit 1
  114. fi
  115.  
  116. #realizamos un case al argumento $1
  117. case $1 in
  118. -start)
  119. start
  120. ;;
  121. -update)
  122. update
  123. ;;
  124. -update)
  125. update
  126. ;;
  127. -revision)
  128. revision
  129. ;;
  130. -author)
  131. author
  132. ;;
  133. -date)
  134. date
  135. ;;
  136. -msg)
  137. if [ $# -ne 2 ]
  138. then
  139. echo "ERROR 2: debe insertar un valor numérico, p.e.: ./$0 -msg 20"
  140. msg_opciones
  141. exit 2
  142. fi
  143. msg $2
  144. ;;
  145. *)
  146. echo "ERROR 3: La opción que inserto es incorrecta"
  147. msg_opciones
  148. exit 3
  149. ;;
  150. esac
  151. exit 0
Add Comment
Please, Sign In to add comment