Autor Tópico: Script pendrive  (Lida 3373 vezes)

Offline jukabala

  • Usuário Ubuntu
  • *
  • Mensagens: 12
    • Ver perfil
Script pendrive
« Online: 27 de Agosto de 2012, 16:01 »
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?
« Última modificação: 27 de Agosto de 2012, 16:05 por jukabala »

Offline irtigor

  • Equipe Ubuntu
  • Usuário Ubuntu
  • *****
  • Mensagens: 4.344
  • Delete, delete, delete!
    • Ver perfil
Re: Script pendrive
« Resposta #1 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.

Offline jukabala

  • Usuário Ubuntu
  • *
  • Mensagens: 12
    • Ver perfil
Re: Script pendrive
« Resposta #2 Online: 27 de Agosto de 2012, 17:07 »
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

Offline jukabala

  • Usuário Ubuntu
  • *
  • Mensagens: 12
    • Ver perfil
Re: Script pendrive
« Resposta #3 Online: 28 de Agosto de 2012, 14:52 »
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

Offline irtigor

  • Equipe Ubuntu
  • Usuário Ubuntu
  • *****
  • Mensagens: 4.344
  • Delete, delete, delete!
    • Ver perfil
Re: Script pendrive
« Resposta #4 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

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

Código: [Selecionar]
#!/bin/bash
dd if=/home/julian/cflex.iso of="/dev/$1"

Offline jukabala

  • Usuário Ubuntu
  • *
  • Mensagens: 12
    • Ver perfil
Re: Script pendrive
« Resposta #5 Online: 28 de Agosto de 2012, 16:13 »
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

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

Código: [Selecionar]
#!/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.



« Última modificação: 28 de Agosto de 2012, 16:15 por jukabala »

Offline jukabala

  • Usuário Ubuntu
  • *
  • Mensagens: 12
    • Ver perfil
Re: Script pendrive
« Resposta #6 Online: 30 de Agosto de 2012, 09:17 »
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

Offline irtigor

  • Equipe Ubuntu
  • Usuário Ubuntu
  • *****
  • Mensagens: 4.344
  • Delete, delete, delete!
    • Ver perfil
Re: Script pendrive
« Resposta #7 Online: 30 de Agosto de 2012, 13:59 »
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.