Crear Script para Raspbian

Iniciado por *ye7ez*, 29 Noviembre 2017, 17:28 PM

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

*ye7ez*




Buen día a todos, soy nuevo en esto de la programación en Raspbian, tengo una Raspi3 pero todavía no logro lo que quiero, ya hice los sencillos pasos como cambiar el idioma, actualización del SO, cambio de Región, cambio de usuario y contraseña, al igual que la contraseña del 'root', pero lo que quiero hacer es los siguiente:

1) crear un Script que haga lo siguiente: "Cuando introduzca una USB, que la monte en 'tal carpeta' de manera automática (osea que el Srcipt detecte cuando se introduce la USB y lo monte en automático sin necesidad de ejecutarlo).

2) crear un Script que haga lo siguiente: "Que todos los vídeos que tengo en 'tal carpeta' se reproduzcan automáticamente en otra terminal (recuerdo que la Raspi maneja varias terminales ejemplo: Ctrl + Alt + 1, Ctrl + Alt + 2, Ctrl + Alt +3, etc) en este caso quisiera que se ejecute en la Terminal 2 el vídeo o los vídeos con el programa mplayer que también ya tengo instalado en la Raspi

Creo que por ahora seria eso, ando investigando pero no se mucho sobre la programada y repito, soy nuevo en esto, espero y puedan ayudarme, muchas gracias y saludos!!!.  :xD
[/size]

engel lex

Lo primero es configuración, esa es la configuración común, al conectar un USB lo monta con permisos públicos

Lo segundo no es así como tal, las consolas tty son eso, consolas, no interfaces de vídeo, por otro lado con el raspberry es bueno limitarse a su reproductor (como se llamaba?) Que lo que hace es dar output directo por hardware hacia el hdmi
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

*ye7ez*



Buen día y gracia por responder.

Se que a lo mejor suena raro eso de lo Primero pero acá no me lo monta en automático, le tengo que dar la orden para que monte la USB en un lugar en especifico, ejemplo

:~# mount /dev/sda1  /media/penDrive

y lo que quiero es que la monte en automático en esta carpeta sin necesidad de meter comando.

El Segundo lo digo por que donde trabajo, se hacen los procesos con Raspbian de esta manera:
Cuando inicia el Raspi=
Terminal 1 es la interfaz de consola (lo normal)
Terminal 2 (que es la que arranca por default el sistema) reproduce los videos automáticamente
Terminal 3 muestra la interfaz de consola
Terminal 4 muestra la interfaz de consola , etc, etc, etc.

A lo que me refiero es: (como rayos hicieron que en la Terminal 2 muestre un vídeo y que cuando yo edito o borro o agrego un vídeo dentro de la Terminal 3, hace el efecto en la Terminal 2) por eso es mi pregunta de como crearía un script para lograr algo como eso  :-\

Saludos!



engel lex

ahora si me perdiste,. te dejé de entender, por favor explicate con detalle
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

*ye7ez*


Disculpa jejeje......

SCRIPT DE USB

Lo del Script del USB que me comentas que solo es configuracion, es lo que no se hacer para que lo haga de manera automática, a fuerza le tengo que dar este comando en mi caso para que lo haga

:~# mount /dev/sda1  /media/penDrive

pero lo que yo necesito es que la monte en automático en esta carpeta (penDrive )sin necesidad de meter comando (para eso se generaría el Script)

AHORA CON LO DE LAS TERMINALES SCRIPT DE VIDEO

Donde trabajo, se hacen los procesos con Raspbian de esta manera:
Cuando inicia el Raspi aparece lo que es el proceso de arranque y todo, cuando termina........automáticamente manda la Terminal 2 con un vídeo reproduciendo y esto es lo que he investigado:

Terminal 1 es la interfaz de consola (lo normal)
Terminal 2 (que es la que arranca por default el sistema) reproduce los vídeos automáticamente
Terminal 3 muestra la interfaz de consola
Terminal 4 muestra la interfaz de consola , etc, etc, etc.

Te repito que todo esto se maneja en donde yo trabajo, pero no conozco el código y mucho menos como se realizo, solo me se lo básico, supervisar, cambiar fecha y hora, etc.
Lo que no entiendo es (como rayos hicieron que en la Terminal 2 muestre un vídeo y que cuando yo edito o borro o agrego un vídeo dentro de la Terminal 3, hace el efecto en la Terminal 2), quiero hacer casi lo mismo en la raspi que estoy configurando pero no se hacerlo y es donde necesito ayuda, espero ahora poder haberme explicado mejor jejeje.

Saludos.

Slava_TZD

#5
No es por cortarte las alas, pero creo que todo lo que comentas a pesar de no ser 'complejo' te queda un poco grande. Si lo que quieres es que tu usb se monte de forma automática cuando booteas añade la línea correspondiente al fstab, si lo que quieres es ejecutar un script cuando introduces el usb (que es lo que entendí en tu primer post) necesitas crear una regla con udev que ejecute X script cuando se detecte el uuid del usb...

El tema del video es cuestión del reproductor y de que tengas soporte para framebuffer...si te vas a una tty y corres "vlc --vout fbdev video.avi" verás que el vídeo se reproduce en esa tty.

Explica mejor lo que quieres conseguir, parte de lo que dices no tiene ningún sentido. eg

Citarcuando yo edito o borro o agrego un vídeo dentro de la Terminal 3, hace el efecto en la Terminal 2)




Para montar tu disco con udev necesitas 3 cosas: la regla que identifica el disco, una unit que será invocada por udev y el script que montará tu disco y hará con el lo que quieras.


Para escribir la regla udev necesitamos algunos datos, empecemos por averiguar el nombre del disco.

# fdisk -l
Disco /dev/sdb: 1000.2 GB, 1000204885504 bytes
255 cabezas, 63 sectores/pista, 121601 cilindros, 1953525167 sectores en total
Unidades = sectores de 1 * 512 = 512 bytes
Tamaño de sector (lógico / físico): 512 bytes / 4096 bytes
Tamaño E/S (mínimo/óptimo): 4096 bytes / 33553920 bytes
Identificador del disco: 0x01a8375a

Dispositivo Inicio    Comienzo      Fin      Bloques  Id  Sistema
/dev/sdb1            2048  1953521663   976759808    7  HPFS/NTFS/exFAT


El siguiente paso es obtener mas información con udevadm.
# udevadm info -a -p $(udevadm info -q path -n /dev/sdb)
looking at parent device '/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/2-1.3:1.0/host4/target4:0:0/4:0:0:0':
   KERNELS=="4:0:0:0"
   SUBSYSTEMS=="scsi"
   DRIVERS=="sd"
   ATTRS{rev}=="0302"
   ATTRS{type}=="0"
   ATTRS{scsi_level}=="7"
   ATTRS{model}=="BUP Slim RD     "
   ATTRS{state}=="running"
   ATTRS{queue_type}=="ordered"
   ATTRS{iodone_cnt}=="0x18ad3"
   ATTRS{iorequest_cnt}=="0x18ad3"
   ATTRS{device_busy}=="0"
   ATTRS{evt_capacity_change_reported}=="0"
   ATTRS{timeout}=="30"
   ATTRS{evt_media_change}=="0"
   ATTRS{ioerr_cnt}=="0x2"
   ATTRS{queue_depth}=="30"
   ATTRS{vendor}=="Seagate "
   ATTRS{evt_soft_threshold_reached}=="0"
   ATTRS{device_blocked}=="0"
   ATTRS{evt_mode_parameter_change_reported}=="0"
   ATTRS{evt_lun_change_reported}=="0"
   ATTRS{evt_inquiry_change_reported}=="0"
   ATTRS{iocounterbits}=="32"
   ATTRS{vpd_pg80}==""
   ATTRS{vpd_pg83}==""
   ATTRS{eh_timeout}=="10"



Creamos la regla udev con la información que identificará el disco o la memoria.
# vi /etc/udev/rules.d/50-auBackup.rules

KERNEL=="sd?1", ACTION=="add", SUBSYSTEMS=="scsi", ATTRS{vendor}=="Seagate ", ATTRS{model}=="BUP Slim RD     ", RUN+="/bin/systemctl --no-block start backup@%k.service", ENV{UDISKS_IGNORE}=1


Con la regla anterior iniciamos un servicio que a su vez lanzará el script que monta el disco pasando como parámetro la primera partición.
# nano /etc/systemd/system/backup@.service

[Unit]
Description=auBackup
BindsTo=dev-%i.device
[Service]
Type=simple
ExecStart=/root/backup.sh %i


Ya solo queda crear el script, en mi caso el path es /root/backup.sh
# vim /root/backup.sh

#!/bin/bash

if [ ! -d /mnt/Backup ] ; then mkdir /mnt/Backup ; fi
/bin/mount -t auto /dev/$1 /mnt/Backup


https://mrcat.es/Backups-autom%C3%A1ticos-USB/

Todo lo anterior es un ejemplo que de hecho tenía otra finalidad pero vale para lo mismo, tienes que modificar los datos del disco...etc

Suerte



The fact is, even if you were to stop bombing us, imprisoning us, torturing us, vilifying us, and usurping our lands, we would continue to hate you because our primary reason for hating you will not cease to exist until you embrace Islam.

*ye7ez*


Buen día, Gracias por responder, estoy trabajando en el código que compartiste, les repito, soy nuevo en esto de la programación, pero muchas gracias por su apoyo, los mantengo informados o les volveré a dar molestias, gracia!!  ;-)