Advertisement
cesarzeta

Admin users and groups ext

Mar 2nd, 2013
183
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 7.33 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. function main(){
  4. while [ true ]
  5. do
  6.     #Comprobamos que el usuario es root.
  7.     if [ $(whoami) != "root" ]
  8.     then
  9.             echo "Debe ser root para correr este script."
  10.             echo "Entre como root al sistema , o puede usar "sudo -i" sin las comillas."
  11.             sleep 3
  12.             exit
  13.     fi     
  14.     #Presentación.
  15.     echo
  16.     echo "Script para Administración de Usuarios"
  17.     echo "------ -- -------------- -- ----- ------ -- ---"
  18.     echo
  19.     #Mostramos el menú de administración
  20.     echo " Menú"
  21.     echo " ----"
  22.     echo " 1. Crear un usuario con adduser."
  23.     echo " 2. Crear un usuario con useradd. ArchLinux"
  24.     echo " 3. Ver datos de un usuario."
  25.     echo " 4. Cambiar la contraseña de un usuario."
  26.     echo " 5. Forzar a un usuario a cambiar la contraseña."
  27.     echo " 6. Bloquear cuenta de usuario"
  28.     echo " 7. Desbloquear cuenta de usuario"
  29.     echo " 8. Añadir un usuario a un grupo."
  30.     echo " 9. Borrar un usuario."
  31.     echo " 10. Crear un grupo."
  32.     echo " 11. Borrar un grupo."
  33.     echo " 0. Salir."
  34.     echo
  35.     #Elegimos una opción y controlamos errores en la elección
  36.     echo -n " Elija una opción: "
  37.     read  opcion
  38.     if [ "$opcion" = "" ];then echo "No eligió la opción";sleep 3;main;else  let n=$opcion;let min=0;let max=11;fi
  39.     if [ "$n" -lt "$min"  -o  "$n" -gt "$max" ];then echo "Eligió una opción no válida."; n="";sleep 3;main;fi
  40.     #Llamamos a la función seleccion para ejecutar la opción elegida
  41.     seleccion `echo $opcion`
  42. done
  43. }
  44.  
  45. function seleccion(){
  46. case $1 in
  47. 0)
  48. salir
  49. ;;
  50. 1)
  51. create_user
  52. ;;
  53. 2)
  54. create_user_arch
  55. ;;
  56. 3)
  57. query_user
  58. ;;
  59. 4)
  60. ch_passwd_user
  61. ;;
  62. 5)
  63. ch_passwd_user_f
  64. ;;
  65. 6)
  66. lock_user
  67. ;;
  68. 7)
  69. unlock_user
  70. ;;
  71. 8)
  72. user_to_group
  73. ;;
  74. 9)
  75. delete_user
  76. ;;
  77. 10)
  78. create_group
  79. ;;
  80. 11)
  81. delete_group
  82. ;;
  83. esac
  84. }
  85.  
  86. function getusers(){
  87. if [ -f /tmp/usuarios  ];then rm /tmp/usuarios;fi
  88. cat /etc/passwd | cut -d: -f1 | sort >> /tmp/usuarios
  89. echo
  90. echo "Usuarios existentes en el sistema."
  91. echo
  92. while read linea
  93. do
  94. echo $linea
  95. done < /tmp/usuarios
  96. }
  97.  
  98. function getgroups(){
  99. if [ -f /tmp/grupos  ];then rm /tmp/grupos;fi
  100. cat /etc/group | cut -d: -f1 | sort >>/tmp/grupos
  101. echo
  102. echo "Grupos existentes en el sistema."
  103. echo
  104. while read linea
  105. do
  106. echo $linea
  107. done < /tmp/grupos
  108. }
  109.  
  110. function create_user(){
  111. getusers
  112. existe="no"
  113. echo
  114. echo "Crear un usuario"
  115. echo
  116. echo -n "Nombre del usuario a crear: "
  117. read nombre
  118. while read linea
  119. do
  120.     if  [ "$linea" = "$nombre" ];then  existe="si";fi
  121. done </tmp/usuarios
  122. if [ "$existe" = "no"  ]
  123. then
  124.     adduser $nombre
  125. else
  126.     echo
  127.     echo "Error, el usuario ya existe"
  128.     sleep 3
  129. fi
  130. }
  131.  
  132. function create_user_arch(){
  133. getusers
  134. existe="no"
  135. echo
  136. echo "Crear un usuario"
  137. echo
  138. echo -n "Nombre del usuario a crear: "
  139. read nombre
  140. while read linea
  141. do
  142.     if  [ "$linea" = "$nombre" ];then  existe="si";fi
  143. done </tmp/usuarios
  144. if  [ "$existe" =  "no"  ]
  145. then
  146.     echo   "Escriba los grupos a los que el usuario pertenecerá"
  147.     echo   "separados por \",\" sin espacio entre ellos."
  148.     echo -n "Ejemplo: wheel,video,audio,optical,scanner :"
  149.     read selgroups
  150.     useradd -m -g users -G $selgroups -s /bin/bash   $nombre
  151. else
  152.     echo
  153.     echo "Error, el usuario ya existe"
  154.     sleep 3
  155. fi
  156. }
  157.  
  158. function delete_user(){
  159. getusers
  160. echo
  161. echo "Borrar un usuario"
  162. echo
  163. echo -n "Nombre del usuario a borrar: "
  164. read nombre
  165. if [ "$nombre" = "root" ];then echo "Error. No puede borrar root.";main;fi
  166. echo
  167. echo "No se borrara  /home/usuario de $nombre."
  168. echo "El borrrado deberá ejecutarse manualmente"
  169. echo "El borrado de $nombre de /etc/groups deberá ser manual"
  170. echo
  171. userdel  $nombre
  172. sleep 3
  173. }
  174.  
  175. function ch_passwd_user(){
  176. getusers
  177. existe="no"
  178. echo
  179. echo "Cambiar contraseña de un usuario"
  180. echo
  181. echo -n "Nombre del usuario a cambiar passwd: "
  182. read nombre
  183. while read linea
  184. do
  185.     if  [ "$linea" = "$nombre" ];then  existe="si";fi
  186. done </tmp/usuarios
  187. if [ "$existe" = "si"  ]
  188. then
  189.     passwd $nombre
  190. else
  191.     echo
  192.     echo "Error. El usuario no existe"
  193.     sleep 3
  194. fi
  195. }
  196.  
  197. function ch_passwd_user_f(){
  198. getusers
  199. existe="no"
  200. echo
  201. echo "Obligar  cambio de contraseña a un usuario"
  202. echo
  203. echo -n "Nombre del usuario obligado a cambiar passwd: "
  204. read nombre
  205. while read linea
  206. do
  207.     if  [ "$linea" = "$nombre" ];then  existe="si";fi
  208. done </tmp/usuarios
  209. if [ "$existe" = "si"  ]
  210. then
  211.     chage -d 0 $nombre
  212. else
  213.     echo
  214.     echo "Error. El usuario no existe"
  215.     sleep 3
  216. fi
  217. }
  218.  
  219. function lock_user(){
  220. getusers
  221. existe="no"
  222. echo
  223. echo "Bloquear un usuario"
  224. echo
  225. echo -n "Nombre del usuario a bloquear: "
  226. read nombre
  227. if [ "$nombre" = "root" ];then echo "Error. No puede bloquear root.";main;fi
  228. while read linea
  229. do
  230.     if  [ "$linea" = "$nombre" ];then  existe="si";fi
  231. done </tmp/usuarios
  232. if [ "$existe" = "si"  ]
  233. then
  234.     echo
  235.     passwd -l $nombre
  236. else
  237.     echo
  238.     echo "Error, el usuario no existe"
  239.     sleep 3
  240. fi
  241. }
  242.  
  243. function unlock_user(){
  244. getusers
  245. existe="no"
  246. echo
  247. echo "Desbloquear un usuario"
  248. echo
  249. echo -n "Nombre del usuario a desbloquear: "
  250. read nombre
  251. while read linea
  252. do
  253.     if  [ "$linea" = "$nombre" ];then  existe="si";fi
  254. done </tmp/usuarios
  255. if [ "$existe" = "si"  ]
  256. then
  257.     echo
  258.     passwd -u $nombre
  259. else
  260.     echo
  261.     echo "Error, el usuario no existe"
  262.     sleep 3
  263. fi
  264. }
  265.  
  266. function query_user(){
  267. getusers
  268. existe="no"
  269. echo
  270. echo "Consultar sobre un usuario"
  271. echo
  272. echo -n "Nombre del usuario a consultar: "
  273. read nombre
  274. while read linea
  275. do
  276.     if  [ "$linea" = "$nombre" ];then  existe="si";fi
  277. done </tmp/usuarios
  278. if [ "$existe" = "si"  ]
  279. then
  280.     Userid=`cat /etc/passwd | grep -Ew ^$nombre | cut -d":" -f3`
  281.     UserPrimaryGroupId=`cat /etc/passwd | grep -Ew ^$nombre | cut -d":" -f4`
  282.     UserPrimaryGroup=`cat /etc/passwd | grep :"$UserPrimaryGroupId": | cut -d":" -f1`
  283.     UserInfo=`cat /etc/passwd | grep -Ew ^$nombre | cut -d":" -f5`
  284.     UserHomeDir=`cat /etc/passwd | grep -Ew ^$nombre | cut -d":" -f6`
  285.     UserShell=`cat /etc/passwd | grep -Ew ^$nombre | cut -d":" -f7`
  286.     UserGroups=`cat /etc/group |grep $nombre |cut -d":" -f1`
  287.     HomeDirSize=`exec du -hs $UserHomeDir `
  288.     echo "Nombre" "$nombre" "$Userid"
  289.     echo "Información del usuario" "$UserInfo"
  290.     echo
  291.     echo "Grupo primario" "$UserPrimaryGroup" "$UserPrimaryGroupId"
  292.     echo "Shell por defecto" "$UserShell"
  293.     echo  "Es mienbro de los grupos:"
  294.     echo "$UserGroups"
  295.     echo
  296.     echo "Directorio personal" $UserHomeDir  $HomeDirSize
  297.     chage -l $nombre | grep "La contraseña caduca"  
  298.     chage -l $nombre | grep "Último cambio de contraseña"
  299.     chage -l $nombre | grep "La cuenta caduca"
  300.     echo;echo -n "Para continuar presione enter: ";read opcion  
  301. else
  302.     echo "Error. El usuario no existe"
  303.     sleep 3
  304. fi
  305. }
  306.  
  307. function user_to_group(){
  308. getusers
  309. echo
  310. echo "Agregar usuario a un grupo"
  311. echo
  312. echo -n "Nombre del usuario a agregar:"
  313. read usernombre
  314. echo
  315. getgroups
  316. echo
  317. echo -n "Nombre del grupo donde agregar el usuario:"
  318. read groupnombre
  319. usermod -a -G $groupnombre $usernombre
  320. sleep 3
  321. }
  322.  
  323. function create_group(){
  324. getgroups
  325. existe="no"
  326. echo
  327. echo "Crear un grupo"
  328. echo
  329. echo -n "Nombre del nuevo grupo: "
  330. read grupo
  331. while read linea
  332. do
  333.     if [ "$linea" = "$grupo" ];then existe="si";fi
  334. done </tmp/grupos
  335. if [ "$existe" = "si"  ]
  336. then
  337.     echo
  338.     echo "Error, el grupo ya existe"
  339.     sleep 3
  340. else
  341.     addgroup $grupo
  342. fi
  343. }
  344.  
  345. function delete_group(){
  346. getgroups
  347. echo
  348. echo "Borrar un grupo"
  349. echo
  350. echo -n "Nombre del grupo a borrar: "
  351. read nombre
  352. echo
  353. groupdel  $nombre
  354. sleep 3
  355. }
  356.  
  357. function salir(){
  358. if [ -f /tmp/usuarios  ];then rm /tmp/usuarios;fi
  359. if [ -f /tmp/grupos  ];then rm /tmp/grupos;fi
  360. exit 0
  361. }
  362. main
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement