comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

Script que genera una estructura de directorios FHS

  • 5 Respuestas
  • 4800 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Stiuvert

  • *
  • Colaborador
  • *
  • Mensajes: 2667
  • Actividad:
    0%
  • Reputación 14
    • Ver Perfil
  • Skype: stiuvert@gmail.com
  • Twitter: @Stiuvert
« en: Julio 25, 2015, 03:31:33 pm »
El otro día estuve viendo un esquema del sistema de archivos de Linux realizado por  @No tienes permisos para ver links. Registrate o Entra con tu cuenta, y como tenía un script que generaba la estructura he decido postearlo. Básicamente consiste en crear los directorios y la estructura.

Servirá para los que recién empiezan en Bash, algo sencillo para ir jugando con menús y comparaciones. Tengo una segunda versión que reliza copias de seguridad si lo encuentro lo postearé aunque animo a los usuarios a que realicen sus Scripts.

Un saludo

Código: Bash
  1. #!/bin/bash
  2. # Crear un script que genere una estructura de directorios y cumpla las normas FHS.
  3. # By Stiuvert
  4.  
  5. opc=1
  6. flag=0
  7.  
  8. while [ $opc -ne 0 ];do
  9. clear
  10. echo '1. - Crear estructura de directorios FHS'
  11. echo '2. - Crear estructura en el directorio /usr'
  12. echo '3. - Crear estructura en el directorio /var'
  13. echo '0. - Salir'
  14. echo -n "Elige una opción: "
  15. read opc
  16.  
  17.  
  18. # Estructura FHS
  19. if [ $opc -eq 1 ];
  20. then
  21.     clear
  22.         echo '- /proc'
  23.         echo '- /sys'
  24.         echo '- /cdrom'
  25.         echo '- /initrd'
  26.         echo '- /bin'
  27.         echo '- /boot'
  28.         echo '- /dev'
  29.         echo '- /etc'
  30.         echo '- /home'
  31.         echo '- /lib'
  32.         echo '- /media'
  33.         echo '- /mnt'
  34.         echo '- /opt'
  35.         echo '- /root'
  36.         echo '- /sbin'
  37.         echo '- /tmp'
  38.         echo '- /usr'
  39.         echo '- /var'
  40.     echo 'Crear los siguientes directorios (s/n): ' #pregunta si o no
  41.         read crear
  42.         if [ $crear == "s" ]; # 'S' creamos los directorios
  43.         then   
  44.            mkdir /{proc,sys,cdrom,initrd,bin,boot,dev,etc,home,lib,media,mnt,opt,root,sbin,tmp,usr,var}
  45.            flag=1
  46.            sleep 1
  47.         fi
  48.         if [ $crear == "n" ]; # 'n' vuelve al menu principal
  49.         then [ $opc -eq 0 ];   
  50.         fi
  51. fi
  52.  
  53.  
  54. # El directorio /usr
  55. if [ $opc -eq 2 ];
  56. then
  57.         if [ $flag -eq 1 ];
  58.         then
  59.     clear
  60.         echo '- /usr/bin'
  61.         echo '- /usr/include'
  62.         echo '- /usr/lib'
  63.         echo '- /usr/local'
  64.         echo '- /usr/sbin'
  65.         echo '- /usr/src'
  66.     echo 'Crear los siguientes directorios (s/n): ' #pregunta si o no
  67.         read crear
  68.         fi
  69.        
  70.         if [ $crear == "s" ]; # 'S' creamos los directorios
  71.         then
  72.         mkdir /usr/{bin,include,lib,local,sbin,src}
  73.         sleep 1
  74.         fi
  75.        
  76.         if [ $crear == "n" ]; # 'n' vuelve al menu principal
  77.         then [ $opc -eq 0 ];
  78.         fi
  79. fi
  80.  
  81.  
  82. # El directorio /var
  83. if [ $opc -eq 3 ];
  84. then
  85. if [ $flag -eq 1 ];
  86. then
  87.     clear
  88.         echo '- /var/cache'
  89.         echo '- /var/lib'
  90.         echo '- /var/lock'
  91.         echo '- /var/log'
  92.         echo '- /var/mail'
  93.         echo '- /var/run'
  94.         echo '- /var/spool'
  95.         echo '- /var/tmp'
  96.     echo 'Crear los siguientes directorios (s/n): '
  97.         read directorios
  98. fi
  99.  
  100.         if [ $directorios == "s" ]; # 'S' creamos los directorios
  101.         then
  102.         mkdir /var/{cache,lib,lock,log,mail,run,spool,tmp}
  103.         sleep 1
  104.         fi
  105.        
  106.         if [ $crear == "n" ]; # 'n' vulve al menu principal
  107.         then [ $opc -eq 0 ];
  108.         fi
  109. fi
  110.  
  111. done
  112.  

Desconectado CRC-_-

  • *
  • Underc0der
  • Mensajes: 61
  • Actividad:
    0%
  • Reputación 0
  • #!/bin/env python >_<
    • Ver Perfil
« Respuesta #1 en: Julio 25, 2015, 05:16:21 pm »
Gracias por el tiempo que as dedicado a crear el script, como bien dices me sirven para empezar a coger el punto a bash. Tengo algunas dudas en el código que no se que significan. Saludos

Código: No tienes permisos para ver links. Registrate o Entra con tu cuenta

$opc -ne 0 --> $op se que llamas a una variable pero -ne?
$opc -eq 1 --> -eq?
¡La información tiene que ser libre y accesible a tod@ el mundo!

Desconectado Stiuvert

  • *
  • Colaborador
  • *
  • Mensajes: 2667
  • Actividad:
    0%
  • Reputación 14
    • Ver Perfil
  • Skype: stiuvert@gmail.com
  • Twitter: @Stiuvert
« Respuesta #2 en: Julio 25, 2015, 07:53:33 pm »
Buenas,

while [ $opc -ne 0 ];do #mientras opc sea distinto a 0

Lo que hace es forzar a entrar en el menú, es decir, la opción 0 es salir por lo tanto digo "mientras opc (variable opción) no sea 0 hacer ESTO.

Tu segunda duda creo que es esto:

if [ $opc -eq 1 ];

Significa que, si opción es igual a 1 hazme esto.

El usuario tiene que elegir en el menú que es lo que quiere hacer, si escoge 1 pues la primera opción, si escoge 2 la segunda opción y si escoge 0 pues saldrá del programa.


Un saludo

Desconectado po6xsecpo

  • *
  • Underc0der
  • Mensajes: 45
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Email
  • Skype: po6xsecpo@gmail.com
« Respuesta #3 en: Agosto 25, 2015, 06:42:06 pm »
Cuando usas condicionales (if o while) en bash se testea el valor booleano (true||false) de lo que está entre "[  ]"
El operador "[ ]" equivale al comando "test". Si consutlas "man test" podrás notar que son nomenclaturas ej.
"-eq" == "equals" == "==" ó este otro "-ge" == "greater or equals" == ">=".

Consultando la manpage tendrás esto más claro.

Saludos. Po6xKernel
No tienes permisos para ver links. Registrate o Entra con tu cuenta
Gracias por el tiempo que as dedicado a crear el script, como bien dices me sirven para empezar a coger el punto a bash. Tengo algunas dudas en el código que no se que significan. Saludos

Código: No tienes permisos para ver links. Registrate o Entra con tu cuenta

$opc -ne 0 --> $op se que llamas a una variable pero -ne?
$opc -eq 1 --> -eq?

Desconectado xianur0n

  • *
  • Underc0der
  • Mensajes: 7
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« Respuesta #4 en: Enero 11, 2016, 04:37:50 am »
Se que el post esta un poquito viejito pero he visto que en el foto no hay tanta documentacion sobre bash. asi que tratare de explicar un poquitillo mas. tal y como explico po6xsecpo, -ne ,-eq, -a, -o son opciones del comando test. esta es la sintasis del comando test: test <opciones> <string>, donde opciones son las opciones aceptadas por el comando test y string es el parametro al que se le aplicaran las opciones. el comando test puede ser utilizado de la siguiente forma [ .... ], mas claro podemos omitir la palabra test siempre y cuando pongamos la expression evaluada entre brackets, en la ultima version de bash 4.0xx se aconseja a usar doble brackets [[ .... ]]. espero que ayude un poquito mas.
Perdon por revivir el post, solo trataba de extender un poco mas la explicacion.
« Última modificación: Enero 11, 2016, 08:40:44 am por rollth »

Desconectado nameless

  • *
  • Underc0der
  • Mensajes: 9
  • Actividad:
    0%
  • Reputación 1
    • Ver Perfil
« Respuesta #5 en: Diciembre 27, 2016, 08:58:12 am »
Código: No tienes permisos para ver links. Registrate o Entra con tu cuenta
#!/usr/bin/env bash

(( $EUID != 0 )) && printf "you must be root...\n" && exit ||  while [[ ${exit:-n} != [Yy] ]]; do

echo '********
1-Crear estructura de directorios FHS
2-Crear estructura en el directorio /usr
3-Crear estructura en el directorio /var
4-Salir
**************'
        read -rep $'Entry option : \n' op
        case $op in
                1) printf "hello op1\n";;
                2) printf "hello op2\n";;
                3) printf "hello op3\n";;
                4) read -rep $'Exit Y/N? \n' exit ;;
                *)read -rep $'error enter a valid option... press enter to continue...\n' && clear
                        op= ;;
        esac
done

Dentro de las opciones pones el code del mkdir. Los if los puedes trabajar como test, y en vez del "s" para una pregunta usa Regex.
Saludos

 

¿Te gustó el post? COMPARTILO!



Script para extraer el valor de una clave del registro

Iniciado por ANTRAX

Respuestas: 0
Vistas: 1491
Último mensaje Julio 18, 2011, 10:12:40 pm
por ANTRAX
Script para ejecutar un archivo BAT con salida nula

Iniciado por ANTRAX

Respuestas: 0
Vistas: 1469
Último mensaje Julio 18, 2011, 10:13:11 pm
por ANTRAX
[Bash] sencillo script para backups

Iniciado por CRC-_-

Respuestas: 1
Vistas: 1966
Último mensaje Enero 17, 2016, 03:01:10 pm
por CRC-_-
[Script] Instalación de Sublime Text 2

Iniciado por R3v0lve

Respuestas: 0
Vistas: 1499
Último mensaje Septiembre 28, 2015, 04:16:43 am
por R3v0lve
[Bash] Script que loggea tu IP publica.

Iniciado por xianur0n

Respuestas: 0
Vistas: 2077
Último mensaje Enero 18, 2016, 03:16:39 pm
por xianur0n