1
0

sd 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223
  1. #!/bin/bash
  2. #Modificado el 14/06
  3. dir_user="/userDIR"
  4. dir="/etc/adm-lite"
  5. fun_ip () {
  6. MEU_IP=$(ip addr | grep 'inet' | grep -v inet6 | grep -vE '127\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | grep -o -E '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | head -1)
  7. MEU_IP2=$(wget -qO- ipv4.icanhazip.com)
  8. [[ "$MEU_IP" != "$MEU_IP2" ]] && echo "$MEU_IP2" || echo "$MEU_IP"
  9. }
  10. removeonline(){
  11. i=1
  12. [[ -d /var/www/html ]] && [[ -e /var/www/html/$arquivo_move ]] && rm -rf /var/www/html/$arquivo_move > /dev/null 2>&1
  13. [[ -e /var/www/$arquivo_move ]] && rm -rf /var/www/$arquivo_move > /dev/null 2>&1
  14. echo -e "${cor[5]}Extraxion Exitosa Exitosa"
  15. echo -e "$barra"
  16. echo "SUBIENDO"
  17. subironline
  18. }
  19. subironline(){
  20. [ ! -d /var ] && mkdir /var
  21. [ ! -d /var/www ] && mkdir /var/www
  22. [ ! -d /var/www/html ] && mkdir /var/www/html
  23. [ ! -e /var/www/html/index.html ] && touch /var/www/html/index.html
  24. [ ! -e /var/www/index.html ] && touch /var/www/index.html
  25. chmod -R 755 /var/www
  26. cp $HOME/$arquivo_move /var/www/$arquivo_move
  27. cp $HOME/$arquivo_move /var/www/html/$arquivo_move
  28. service apache2 restart
  29. IP="$(fun_ip)"
  30. echo -e "\033[1;36m http://$IP:81/$arquivo_move\033[0m"
  31. echo -e "$barra"
  32. echo -e "${cor[5]}Carga Exitosa!"
  33. echo -e "$barra"
  34. read -p "PRESIONE ENTER"
  35. }
  36. echo -e "\033[1;33mMenu de Respaldos de Usuarios\033[1;30m
  37. ----------------------------------
  38. \033[1;32m1) \033[1;37mCrear respaldo de Usuarios Online
  39. ----------------------------------
  40. \033[1;32m2) \033[1;37mRestaurar Usuarios de un backup Online
  41. ----------------------------------
  42. \033[1;32m3) \033[1;37m RESTAURAR FILE LOCAL
  43. ----------------------------------"
  44. read -p "ECOJE: " option
  45. function backup_de_usuarios(){
  46. echo -e "--------------------------------------------------------"
  47. read -p "Ingrese Nombre de su Fichero o pulse ENTER: " name
  48. bc="$HOME/$name"
  49. arquivo_move="$name"
  50. clear
  51. i=1
  52. [[ -e $bc ]] && rm $bc
  53. echo -e "\033[1;37mHaciendo Backup de Usuarios...\033[0m"
  54. [[ -e /bin/ejecutar/token ]] && passTK=$(cat < /bin/ejecutar/token)
  55. #for user in `awk -F : '$3 > 900 { print $1 }' /etc/passwd |grep -v "nobody" |grep -vi polkitd |grep -vi systemd-[a-z] |grep -vi systemd-[0-9] |sort`
  56. for user in `cat "/etc/passwd"|grep 'home'|grep 'false'|grep -v 'syslog' | cut -d: -f1 |sort`
  57. do
  58. if [ -e $dir$dir_user/$user ]
  59. then
  60. pass=$(cat $dir$dir_user/$user | grep "senha" | awk '{print $2}')
  61. limite=$(cat $dir$dir_user/$user | grep "limite" | awk '{print $2}')
  62. data=$(cat $dir$dir_user/$user | grep "data" | awk '{print $2}')
  63. data_sec=$(date +%s)
  64. data_user=$(chage -l "$user" |grep -i co |awk -F ":" '{print $2}')
  65. data_user_sec=$(date +%s --date="$data_user")
  66. variavel_soma=$(($data_user_sec - $data_sec))
  67. dias_use=$(($variavel_soma / 86400))
  68. if [[ "$dias_use" -le 0 ]];
  69. then
  70. dias_use=0
  71. fi
  72. sl=$((dias_use + 1))
  73. i=$((i + 1))
  74. [[ -z "$limite" ]] && limite="5"
  75. else
  76. echo -e "\033[1;31mNo fue posible obtener la contraseña del usuario\033[1;37m ($user)"
  77. read -p "Introduzca la contraseña manualmente o pulse ENTER: " pass
  78. if [ -z "$pass" ]; then
  79. pass="$user"
  80. fi
  81. fi
  82. [[ $(echo $limite) = "HWID" ]] && echo "$user:$user:HWID:$sl:$pass" >> $bc && echo -e "\033[1;37mUser $pass \033[0;35m [\033[0;36m$limite\033[0;35m]\033[0;31m Backup [\033[1;31mOK\033[1;37m] con $sl DIAS\033[0m"
  83. [[ $(echo $limite) = "TOKEN" ]] && echo "$user:$passTK:TOKEN:$sl:$pass" >> $bc && echo -e "\033[1;37mUser $pass \033[0;35m [\033[0;36m$limite\033[0;35m]\033[0;31m Backup [\033[1;31mOK\033[1;37m] con $sl DIAS\033[0m"
  84. [[ "$limite" =~ ^[0-9]+$ ]] && echo "$user:$pass:$limite:$sl" >> $bc && echo -e "\033[1;37mUser $user \033[0;35m [\033[0;36mSSH\033[0;35m]\033[0;31m Backup [\033[1;31mOK\033[1;37m] con $sl DIAS\033[0m"
  85. done
  86. echo " "
  87. echo -e "\033[1;31mBackup Completado !!!\033[0m"
  88. echo " "
  89. echo -e "\033[1;37mLos usuarios $i se encuentra en el archivo \033[1;31m $bc \033[1;37m"
  90. }
  91. function restaurar_usuarios(){
  92. cd $HOME
  93. echo "INGRESE LINK Que Mantienes Online en GitHub, o VPS "
  94. read -p "Pega tu Link : " url1
  95. wget -q -O recovery $url1 && echo -e "\033[1;31m- \033[1;32mFile Exito!" || echo -e "\033[1;31m- \033[1;31mFile Fallo"
  96. #echo -n "Escriba el directorio del archivo Backup: "
  97. echo -e "\033[1;37mRestaurando Usuarios...\033[0m"
  98. [[ -e $HOME/recovery ]] && arq="$HOME/recovery" || return
  99. for user in `cat $arq`
  100. do
  101. usuario=$(echo "$user" |awk -F : '{print $1}')
  102. senha=$(echo "$user" |awk -F : '{print $2}')
  103. limite=$(echo "$user" |awk -F : '{print $3}')
  104. data=$(echo "$user" |awk -F : '{print $4}')
  105. usrHT=$(echo "$user" |awk -F : '{print $5}')
  106. valid=$(date '+%C%y-%m-%d' -d " +$data days")
  107. datexp=$(date "+%d/%m/%Y" -d " +$data days")
  108. if cat /etc/passwd |grep $usuario: 1> /dev/null 2>/dev/null
  109. then
  110. echo -e "\033[1;37m\033[1;31m$usuario \033[1;37mEXISTE: \033[1;31m$senha [\033[1;31mFAILED\033[1;37m]\033[0m" > /dev/null
  111. else
  112. echo "$user" |cut -d: -f3 1> /dev/null 2>/dev/null
  113. if [ $? = 0 ]
  114. then
  115. useradd -M -s /bin/false $usuario
  116. (echo $senha ; echo $senha) | passwd $usuario > /dev/null 2> /dev/null
  117. limit $usuario $limite 1> /dev/null 2> /dev/null
  118. [[ $(echo $limite) = "HWID" ]] && echo "senha: $usrHT" > /etc/adm-lite/userDIR/$usuario
  119. [[ $(echo $limite) = "TOKEN" ]] && echo "senha: $usrHT" > /etc/adm-lite/userDIR/$usuario
  120. [[ "$limite" =~ ^[0-9]+$ ]] && echo "senha: $senha" > /etc/adm-lite/userDIR/$usuario
  121. echo "limite: $limite" >> /etc/adm-lite/userDIR/$usuario
  122. echo "data: $valid" >> /etc/adm-lite/userDIR/$usuario
  123. chage -E $valid $usuario 2> /dev/null
  124. [[ $(echo $limite) = "HWID" ]] && echo -e "\033[1;31m$usrHT \033[1;37mRESTORE: \033[1;31m$limite - \033[1;37m[\033[1;31mOk\033[1;37m] \033[1;37mcon\033[1;31m $data \033[1;37m Dias\033[0m"
  125. [[ $(echo $limite) = "TOKEN" ]] && echo -e "\033[1;31m$usrHT \033[1;37mRESTORE: \033[1;31m$limite - \033[1;37m[\033[1;31mOk\033[1;37m] \033[1;37mcon\033[1;31m $data \033[1;37m Dias\033[0m"
  126. [[ "$limite" =~ ^[0-9]+$ ]] && echo -e "\033[1;31m$usuario \033[1;37mRESTORE: \033[1;31m$senha - \033[1;37m[\033[1;31mOk\033[1;37m] \033[1;37mcon\033[1;31m $data \033[1;37m Dias\033[0m"
  127. else
  128. useradd -M -s /bin/false $usuario
  129. (echo $senha ; echo $senha) | passwd $usuario > /dev/null 2> /dev/null
  130. [[ $(echo $limite) = "HWID" ]] && echo -e "\033[1;31m$usrHT \033[1;37mRESTORE: \033[1;31m$limite - \033[1;37m[\033[1;31mOk\033[1;37m] \033[1;37mcon\033[1;31m $data \033[1;37m Dias\033[0m"
  131. [[ $(echo $limite) = "TOKEN" ]] && echo -e "\033[1;31m$usrHT \033[1;37mRESTORE: \033[1;31m$limite - \033[1;37m[\033[1;31mOk\033[1;37m] \033[1;37mcon\033[1;31m $data \033[1;37m Dias\033[0m"
  132. [[ "$limite" =~ ^[0-9]+$ ]] && echo -e "\033[1;31m$usuario \033[1;37mRESTORE: \033[1;31m$senha - \033[1;37m[\033[1;31mOk\033[1;37m] \033[1;37mcon\033[1;31m $data \033[1;37m Dias\033[0m"
  133. echo "limite: $limite" >> /etc/adm-lite/userDIR/$usuario
  134. chage -E $valid $usuario 2> /dev/null
  135. fi
  136. fi
  137. done
  138. }
  139. _resLOC () {
  140. cd $HOME
  141. echo "INGRESE LA RUTA LOCAL DONDE TIENES ALOJADO EL FICHERO "
  142. echo -e " EJEMPLO : /root/file.txt "
  143. read -p "Pega TU RUTA : " url1
  144. [[ -e $url1 ]] && {
  145. echo -e " FILE ENCONTRADO \n"
  146. arq="$url1"
  147. } || {
  148. echo -e " FILE NO FOUND \n"
  149. return
  150. }
  151. #echo -n "Escriba el directorio del archivo Backup: "
  152. echo -e "\033[1;37mRestaurando Usuarios de ... $arq\033[0m \n"
  153. for user in `cat $arq`
  154. do
  155. usuario=$(echo "$user" |awk -F : '{print $1}')
  156. senha=$(echo "$user" |awk -F : '{print $2}')
  157. limite=$(echo "$user" |awk -F : '{print $3}')
  158. data=$(echo "$user" |awk -F : '{print $4}')
  159. usrHT=$(echo "$user" |awk -F : '{print $5}')
  160. valid=$(date '+%C%y-%m-%d' -d " +$data days")
  161. datexp=$(date "+%d/%m/%Y" -d " +$data days")
  162. if cat /etc/passwd |grep $usuario: 1> /dev/null 2>/dev/null
  163. then
  164. echo -e "\033[1;37m\033[1;31m$usuario \033[1;37mEXISTE: \033[1;31m$senha [\033[1;31mFAILED\033[1;37m]\033[0m" > /dev/null
  165. else
  166. echo "$user" |cut -d: -f3 1> /dev/null 2>/dev/null
  167. if [ $? = 0 ]
  168. then
  169. useradd -M -s /bin/false $usuario
  170. (echo $senha ; echo $senha) | passwd $usuario > /dev/null 2> /dev/null
  171. limit $usuario $limite 1> /dev/null 2> /dev/null
  172. [[ $(echo $limite) = "HWID" ]] && echo "senha: $usrHT" > /etc/adm-lite/userDIR/$usuario
  173. [[ $(echo $limite) = "TOKEN" ]] && echo "senha: $usrHT" > /etc/adm-lite/userDIR/$usuario
  174. [[ "$limite" =~ ^[0-9]+$ ]] && echo "senha: $senha" > /etc/adm-lite/userDIR/$usuario
  175. echo "limite: $limite" >> /etc/adm-lite/userDIR/$usuario
  176. echo "data: $valid" >> /etc/adm-lite/userDIR/$usuario
  177. chage -E $valid $usuario 2> /dev/null
  178. [[ $(echo $limite) = "HWID" ]] && echo -e "\033[1;31m$usrHT \033[1;37mRESTORE: \033[1;31m$limite - \033[1;37m[\033[1;31mOk\033[1;37m] \033[1;37mcon\033[1;31m $data \033[1;37m Dias\033[0m"
  179. [[ $(echo $limite) = "TOKEN" ]] && echo -e "\033[1;31m$usrHT \033[1;37mRESTORE: \033[1;31m$limite - \033[1;37m[\033[1;31mOk\033[1;37m] \033[1;37mcon\033[1;31m $data \033[1;37m Dias\033[0m"
  180. [[ "$limite" =~ ^[0-9]+$ ]] && echo -e "\033[1;31m$usuario \033[1;37mRESTORE: \033[1;31m$senha - \033[1;37m[\033[1;31mOk\033[1;37m] \033[1;37mcon\033[1;31m $data \033[1;37m Dias\033[0m"
  181. else
  182. useradd -M -s /bin/false $usuario
  183. (echo $senha ; echo $senha) | passwd $usuario > /dev/null 2> /dev/null
  184. [[ $(echo $limite) = "HWID" ]] && echo -e "\033[1;31m$usrHT \033[1;37mRESTORE: \033[1;31m$limite - \033[1;37m[\033[1;31mOk\033[1;37m] \033[1;37mcon\033[1;31m $data \033[1;37m Dias\033[0m"
  185. [[ $(echo $limite) = "TOKEN" ]] && echo -e "\033[1;31m$usrHT \033[1;37mRESTORE: \033[1;31m$limite - \033[1;37m[\033[1;31mOk\033[1;37m] \033[1;37mcon\033[1;31m $data \033[1;37m Dias\033[0m"
  186. [[ "$limite" =~ ^[0-9]+$ ]] && echo -e "\033[1;31m$usuario \033[1;37mRESTORE: \033[1;31m$senha - \033[1;37m[\033[1;31mOk\033[1;37m] \033[1;37mcon\033[1;31m $data \033[1;37m Dias\033[0m"
  187. echo "limite: $limite" >> /etc/adm-lite/userDIR/$usuario
  188. chage -E $valid $usuario 2> /dev/null
  189. fi
  190. fi
  191. done
  192. }
  193. if [ $option -eq 1 ]; then
  194. backup_de_usuarios
  195. echo -e "-------------------------------------------------------"
  196. echo -e " \033[4;31mNOTA importante\033[0m"
  197. echo -e "Recuerda Ir a GitHub y cargarlo Online, para luego poder Restaurarlo!!"
  198. echo -e "-------------------------------------------------------"
  199. echo -e " \033[0;31mSi esta usando maquina, Montalo Online"
  200. echo -e " Para luego usar el Link del Fichero, y puedas ."
  201. echo -e " Descargarlo desde cualquier sitio con acceso WEB"
  202. echo -e " Ejemplo : http://ip-del-vps:81/tu-fichero.\033[0m"
  203. echo -e "-------------------------------------------------------"
  204. read -p "PRESIONA ENTER PARA CARGAR ONLINE"
  205. removeonline
  206. fi
  207. if [ $option -eq 2 ]; then
  208. restaurar_usuarios
  209. fi
  210. if [ $option -eq 3 ]; then
  211. _resLOC
  212. fi