Script pendrive

Iniciado por jukabala, 27 de Agosto de 2012, 16:01

tópico anterior - próximo tópico

jukabala

Boa tarde amigos, preciso de uma ajuda do forum, ow apenas us retokes em meu script,

o cenário é o seguinte, irei precisar gravar 500 pendrive de uma imagem, sendo essa imagem uns arquivos doc,pdf e um client do XEN, que é executado uma DEMO do nosso software, a criação do script é justamente p/ amenizar a forma trabalhosa de ficar inserindo pendrive e copiando.

como irei colocar 3 pendrive por vez na máquina, não sei por onde eu faço isso, consegui gerar desse jeito meu script :

#! /bin/bash                                                                                                                                                                                     
sudo mount -t vfat/dev/sdb1 /tmp/pendrive

if [ -d /tmp/pendrive ]; then
dd if=/home/julian/cflex.iso of=/dev/sdb1
md5sum /dev/sdb1
sudo umount /dev/sdb1
echo "Pendrive desmontado!"

fi

O que acontece ai, td vez que coloco meu pendrive ele é montado automaticamente em /media/PENDRIVE, preciso que o script valide a montagem dele pra outro lugar ou pelo proprio /media, o problema é que os pendrive terão o mesmo nome, então por isso decide criar um diretório pra ele, porém qndo o script executa o dd da iso pro pendrive, faz o checksum e desmonta o pendrive, qndo vou colocar ele novamente na entrada USB, o pendrive não é reconhecido mais, nem no /media nem se eu montar manualmente, e no 'gparted' fica como 'sistema de arquivos' desconhecido, dai eu tenho que formata o pendrive novamente pelo gparted em ntfs ou fat32 p/ que o sistema reconheça-o.
isso seria o basico do script, dps precisarei saber como implantarei nas outras entradas de USB, ow faço 3 script cada um deles apontando p/ /dev/sdb1  /dev/sdc1 e /dev/sdd1 e troco as ordem. mas o problema ainda esta nessa 'localzação' do dispositivo e na copia dessa ISO.
alguem poderia me ajudar nessa tarefa?

irtigor

A imagem é hibrida, ou seja, pode usar o dd? Tenha certeza absoluta, antes de gravar. Também de uma olhada na criação de regras pro udev.

jukabala

Citação de: irtigor online 27 de Agosto de 2012, 16:12
A imagem é hibrida, ou seja, pode usar o dd? Tenha certeza absoluta, antes de gravar. Também de uma olhada na criação de regras pro udev.

desse jeito funcionou :

#! /bin/bash                                                                                                                                                                                     
sudo mount -t vfat /dev/sdb1 /tmp/pendrive

if [ -d /tmp/pendrive ]; then
sudo cp -Rv /home/julian/documentos /tmp/pendrive
#dd if=/home/julian/cflex.iso of=/dev/sdb1
md5sum /dev/sdb1

sudo umount  /dev/sdb1
echo "Pendrive desmontado!"
fi


ele reconhece o pendrive, monta em /tmp/ faz a copia dos arquivos com 'cp' , faz o checksum do USB , desmonta! e dps coloco o pendrive nvoamente , monta em /media que padrão e os arquivos estão lá!

com esse script consegue fazer o esquema das device, tipo qndo eu espetar 2 USB aqui fica /dev/sdb1 e /dev/sdc1

jukabala

preciso de uma ajuda com udev, preciso que ao colocar o pendrive não seja montado o pendrive.

ACTION=="add" KERNEL=="sdb", NAME="pendrive01" ,SYMLINK+="pendrive%n" , RUN+="/root/pendrive.sh"

pendrive.sh é isso :

#! /bin/bash       
                                                                                                                                                                             
umount /dev/sdb1
dd if=/home/julian/cflex.iso of=/dev/sdb1
sudo mount -t usbfs /dev/sdb1 /tmp/pendrive

if [ -d /tmp/pendrive ]; then
md5sum /dev/sdb1

sudo umount -t usbfs /dev/sdb1
echo "Pendrive desmontado!"

fi

logs do syslog :

Aug 28 14:26:42 zeus kernel: [95619.873265] sdb: sdb1
Aug 28 14:26:42 zeus kernel: [95619.877325] sd 44:0:0:0: [sdb] No Caching mode page present
Aug 28 14:26:42 zeus kernel: [95619.877329] sd 44:0:0:0: [sdb] Assuming drive cache: write through
Aug 28 14:26:42 zeus kernel: [95619.877331] sd 44:0:0:0: [sdb] Attached SCSI removable disk
Aug 28 14:26:42 zeus udevd[32059]: kernel-provided name 'sdb' and NAME= 'pendrive01' disagree, please use SYMLINK+= or change the kernel to provide the proper name
Aug 28 14:26:42 zeus kernel: [95620.243478] FAT-fs (sdb1): utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive!
Aug 28 14:26:46 zeus ippl: port 9091 connection attempt from 127.0.0.1
Aug 28 14:26:56 zeus ippl: port 9091 connection attempt from 127.0.0.1
Aug 28 14:27:06 zeus ippl: port 9091 connection attempt from 127.0.0.1
Aug 28 14:27:16 zeus ippl: port 9091 connection attempt from 127.0.0.1
Aug 28 14:27:26 zeus ippl: port 9091 connection attempt from 127.0.0.1
Aug 28 14:27:36 zeus ippl: port 9091 connection attempt from 127.0.0.1
Aug 28 14:27:43 zeus udevd[32059]: timeout: killing '/root/pendrive.sh' [32107]
Aug 28 14:27:43 zeus udevd[32059]: '/root/pendrive.sh' [32107] terminated by signal 9 (Killed)
Aug 28 14:27:46 zeus ippl: port 9091 connection attempt from 127.0.0.1
Aug 28 14:27:56 zeus ippl: port 9091 connection attempt from 127.0.0.1
Aug 28 14:28:06 zeus ippl: port 9091 connection attempt from 127.0.0.1
Aug 28 14:28:16 zeus ippl: port 9091 connection attempt from 127.0.0.1
Aug 28 14:28:26 zeus ippl: port 9091 connection attempt from 127.0.0.1
Aug 28 14:28:36 zeus ippl: port 9091 connection attempt from 127.0.0.1
Aug 28 14:28:46 zeus ippl: port 9091 connection attempt from 127.0.0.1
Aug 28 14:28:56 zeus ippl: port 9091 connection attempt from 127.0.0.1
Aug 28 14:29:06 zeus ippl: port 9091 connection attempt from 127.0.0.1
Aug 28 14:29:16 zeus ippl: port 9091 connection attempt from 127.0.0.1
Aug 28 14:29:23 zeus minissdpd[3376]: 6 devices removed (good-bye!)
Aug 28 14:29:24 zeus minissdpd[3376]: device not found for removing : uuid:6c4f904a-8d41-4a82-b2f8-d7c886eab1ff::upnp:rootdevice
Aug 28 14:29:24 zeus minissdpd[3376]: device not found for removing : uuid:6c4f904a-8d41-4a82-b2f8-d7c886eab1ff
Aug 28 14:29:24 zeus minissdpd[3376]: device not found for removing : uuid:6c4f904a-8d41-4a82-b2f8-d7c886eab1ff::urn:schemas-upnp-org:service:ConnectionManager:1
Aug 28 14:29:24 zeus minissdpd[3376]: device not found for removing : uuid:6c4f904a-8d41-4a82-b2f8-d7c886eab1ff::urn:schemas-upnp-org:device:MediaServer:1
Aug 28 14:29:24 zeus minissdpd[3376]: device not found for removing : uuid:6c4f904a-8d41-4a82-b2f8-d7c886eab1ff::urn:schemas-upnp-org:service:ContentDirectory:1
Aug 28 14:29:24 zeus minissdpd[3376]: device not found for removing : uuid:6c4f904a-8d41-4a82-b2f8-d7c886eab1ff::urn:microsoft.com:service:X_MS_MediaReceiverRegistrar:1

irtigor

Você pode desabilitar o udisks2, que é o programa que monitora/monta, pelo dconf-editor. Mas não vai resolver, já que o seu script não está certo.

Se o pc só tem um disco, a primeira partição do primeiro pendrive vai ser sdb1, a primeira partição do segundo pendrive vai ser sdc1... e assim sucessivamente. A regra precisa ser mais genérica e o seu script também, algo na linha


ACTION=="add", KERNEL=="sd[b-z]*", RUN+="/opt/bin/script %k"



#!/bin/bash
dd if=/home/julian/cflex.iso of="/dev/$1"

jukabala

#5
Citação de: irtigor online 28 de Agosto de 2012, 15:38
Você pode desabilitar o udisks2, que é o programa que monitora/monta, pelo dconf-editor. Mas não vai resolver, já que o seu script não está certo.

Se o pc só tem um disco, a primeira partição do primeiro pendrive vai ser sdb1, a primeira partição do segundo pendrive vai ser sdc1... e assim sucessivamente. A regra precisa ser mais genérica e o seu script também, algo na linha


ACTION=="add", KERNEL=="sd[b-z]*", RUN+="/opt/bin/script %k"



#!/bin/bash
dd if=/home/julian/cflex.iso of="/dev/$1"


poderia me ajudar com script ?

p/ ficar como vc disse, qndo plugado o USB, no dev/ ele reconhece sdb ,sdc e assim sucessivamente?

preciso do seguinte, qndo colocar 3 pendrive o UDEV reconheça e executa o script.




jukabala

como eu começo um script com while true ?

pelo que andei lendo seria interessante fazer assim, pq ele vai dando looping nos dispositivos, gravando e desmontando

irtigor

Não faça assim. Não é a melhor solução, e envolveria os mesmos tipos de mudança no script, se não mais, fique com a regra pro udev.