send
Grupo de Telegram
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.

Montar disco duro automaticamente al iniciar linux

  • 2 Respuestas
  • 2192 Vistas

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

Desconectado elrodrix

  • *
  • Underc0der
  • Mensajes: 14
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« en: Abril 03, 2014, 10:20:56 am »
La idea surgió porque, en mi notebook, tengo toda la música almacenada en una partición para datos (disco D: en NTFS), y cada vez que inicio linux (Debian Wheezy), tengo que montar esa partición para escuchar música. Lo mismo sucede cuando hago una lista de reproducción, necesito montar esa partición.

Entonces se me ocurrió codear un script en python que me permita automatizar el proceso de montar el disco una sola vez y que lo haga cada vez que iniciemos el sistema.

Básicamente, lo que hace el script es crear una carpeta en /media/ con el nombre DATOS, listar las particiones disponibles con el comando fdisk para almacenar el nombre de la unidad en una lista, y luego, junto con su sistema de archivo correspondiente (NTFS, FAT o FAT32) agregarlos a una nueva linea al archivo /etc/fstab/ para que se puedan montar todas las unidades listadas en ese archivo fstab con el comando mount -a

El script se debe correr con permiso sudo, ya que necesito listar las particiones y montarlas con privilegio.

Instrucciones: Se debe listar si o si las particiones (con la opcion 1) para luego setear los valores de unidad y sistema de archivos (opcion 2) de la particion que queremos montar.

Por el momento el script me permite montar solo una particion. Si se copan, pueden agregar un menu mas para montar varias particiones.

Les dejo el código para que lo vean y analicen y todo eso.

Código: Python
  1. #!/usr/bin/python
  2.  
  3. from pexpect import run
  4. from re import split
  5. import os
  6.  
  7. class Crear:
  8.        
  9.         divline = "*"*80               
  10.  
  11.         def listar(self):
  12.                 self.valor = []
  13.                 part = "/dev/sda"
  14.                 stdout = split("\n", run("fdisk -l"))
  15.                 print self.divline
  16.                 print "Listado de Tabla de Particiones"
  17.                 print self.divline
  18.                 #print self.divline
  19.                 for e in stdout:
  20.                         for x in range(1,10):
  21.                                 if part + str(x) in e:
  22.                                         #agrego cadena a la lista
  23.                                         self.valor.append(part + str(x))
  24.                                         #guardo la longitud de la lista
  25.                                         total = len(self.valor)
  26.                                         print "Opcion " + str(total) + ": " + e
  27.  
  28.         def menu(self):
  29.                 while (1):
  30.                   print("""
  31.  
  32.                 ****************************************
  33.                 * Montar particion al iniciar SO       *
  34.                 * por Rodrigo Avila - @el_rodrix       *
  35.                 * rodrigo398@hotmail.com               *
  36.                 ****************************************
  37.  
  38.                 Menu
  39.                 ------
  40.                 1 - Listar tabla de particiones
  41.                 2 - Montar particion en /media/DATOS
  42.                  
  43.                 x - salir
  44.                  
  45.                 """)
  46.                   opc = raw_input("Opcion: ")
  47.                   if (opc == "1"):
  48.                         self.listar()
  49.                   elif (opc == "2"):
  50.                         self.montar()
  51.                   elif (opc.lower() == "x"):
  52.                         print "Bye !"
  53.                         exit()
  54.                   else:
  55.                         print "Opcion no valida"
  56.  
  57.                   print self.divline
  58.                   pausa = raw_input("presiona ENTER para continuar")
  59.  
  60.         def set_particion(self):
  61.                 self.opcion1 = raw_input("Ingrese particion a montar: ")
  62.                 try:
  63.                         self.sda = int(self.opcion1) - 1
  64.                         print self.divline
  65.                         print "Particion a montar: " + self.valor[self.sda]
  66.                         print self.divline
  67.                 except:
  68.                         print "Opcion no valida"
  69.                         exit(0)
  70.  
  71.         def set_sist_archivo(self):
  72.                 self.sist_archivo = ['ntfs', 'fat', 'fat32']
  73.                 texto = "Opcion: "
  74.                 codigo = 0
  75.                 print self.divline
  76.                 print "Sistema de archivo - Elegir una Opcion"
  77.                 print self.divline
  78.                 for x in self.sist_archivo:
  79.                         texto += '(%d)%s ' % (codigo, x)
  80.                         codigo = codigo + 1
  81.                 texto += ": "
  82.                 self.opcion2 = raw_input(texto)
  83.                 try:
  84.                         print self.divline
  85.                         print "Sistema de archivo: " + self.sist_archivo[int(self.opcion2)]
  86.                         print self.divline
  87.                 except:
  88.                         print "Opcion no valida"
  89.                         exit(0)
  90.  
  91.         def verificar_dir(self):
  92.                 try:
  93.                         os.stat("/media/DATOS")
  94.                 except:
  95.                         pass
  96.                 else:
  97.                         print "Ya existe particion montada"
  98.                         exit(0)
  99.  
  100.         def crear_dir(self):
  101.                 try:
  102.                         fichero = split("\n", run("mkdir /media/DATOS"))
  103.                         print self.divline
  104.                         print "Carpeta /media/DATOS creada correctamente"
  105.                         print self.divline
  106.                         pass
  107.                 except:
  108.                         print "Error al crear directorio"
  109.                         exit(0)
  110.  
  111.         def set_path(self):
  112.                 self.verificar_dir()
  113.                 self.crear_dir()
  114.                 self.path = '%s /media/DATOS %s auto,rw,exec,users,dmask=000,fmask=111,nls=utf8 0 0' % (self.valor[self.sda], self.sist_archivo[int(self.opcion2)])
  115.                 print self.path
  116.  
  117.         def agregar_path(self):
  118.                 try:
  119.                         with open('/etc/fstab', 'r+') as fstab:
  120.                                 fstab.read()
  121.                                 fstab.write(self.path)
  122.                         print self.divline
  123.                         print "Se agrego path correctamente"
  124.                         print self.divline
  125.                 except:
  126.                         print "Error al escribir archivo fstab"
  127.                         exit(0)
  128.  
  129.         def set_montar(self):
  130.                 try:
  131.                         fichero2 = split("\n", run("mount -a"))
  132.                         print self.divline
  133.                         print "Particion montada correctamente"
  134.                         print self.divline
  135.                 except:
  136.                         print "Error al montar particion"
  137.                         exit(0)
  138.  
  139.         def montar(self):
  140.                 self.set_particion()
  141.                 self.set_sist_archivo()
  142.                 self.set_path()
  143.                 self.agregar_path()
  144.                 self.set_montar()
  145.  
  146.         #metodo constructor
  147.         def __init__(self):
  148.                 self.menu()
  149.  
  150. #instanciar clase
  151. crear = Crear()
  152.  

Saludos !

P.D.: el menu lo hurte de un script que subieron a Underc0de  ;D

Conectado ANTRAX

  • *
  • Administrator
  • Mensajes: 5267
  • Actividad:
    46.67%
  • Reputación 26
  • ANTRAX
    • Ver Perfil
    • Underc0de
    • Email
  • Skype: underc0de.org
  • Twitter: @Underc0de
« Respuesta #1 en: Abril 03, 2014, 10:28:26 am »
Que bien bro!
Gran aporte compañero! Gracias por el post!


Desconectado Snifer

  • *
  • Underc0der
  • Mensajes: 1439
  • Actividad:
    0%
  • Reputación 1
  • Snifer@L4b's
    • Ver Perfil
    • Snifer@L4bs
  • Twitter: sniferl4bs
« Respuesta #2 en: Abril 03, 2014, 10:45:00 am »
Primero felicitaciones por el desarrollo y el aporte vale mucho la pena aun mas porque aprende uno haciendo scripts que a veces son tontos para algunos porque ya existe la rueda inventada.

Por si no conocias existen utilidades que te permites hacer eso.

You are not allowed to view links. Register or Login

Como tambien a lo artesanal con fstab solo para dar un ejemplo, pero excelente lo que desarrollaste.

Regards,
Snifer
You are not allowed to view links. Register or Login


Llaman traidor a la persona que evito que caiga el foro, gente bruta!



 

¿Te gustó el post? COMPARTILO!



Intalando facilmente modulos para python [Linux]

Iniciado por k0ws

Respuestas: 1
Vistas: 928
Último mensaje Abril 22, 2013, 07:11:42 pm
por Sanko
[Script] Instalar automáticamente todas las herramientas de Kali Linux

Iniciado por LionSec

Respuestas: 16
Vistas: 7956
Último mensaje Abril 05, 2017, 02:42:29 am
por frykytxuso