Estou trabalhando em um script executado pelo Udev sobre a inserção de um novo sdcard no meu Beaglebone Black no Debian Jessie.
A primeira coisa que eu gostaria que meu script fosse criar o diretório /media/sdcard
. Deve ser fácil, mas por alguma razão obscura não está funcionando ...
Aqui está o script que eu escrevi:
#!/bin/bash -xe
#This script creates the /media/sdcard folder in order to mount the sdcard in it
#Error codes:
# - 2 : /media/sdcard already exist but is not a directory
# - 1 : Failed to create /media/sdcard/
logger -t SDCardscripts 'Entering /root/ServolineScripts/PrepareSDCard.sh script'
if [ -d /media/sdcard ]; then
logger '/media/sdcard is already present. Deleting it.' && rm -rf /media/sdcard;
elif [ -f /media/sdcard ]; then
logger -t SDCardscripts 'A file /media/sdcard already exist! Stopping process, Please look in the /media directory and take a decision with it content'
exit 2
else
logger -t SDCardscripts '/media/sdcard does not exist creating a new one'
fi
mkdir -p /media/sdcard
if [ $? -eq 0 ];then
logger -t SDCardscripts '/media/sdcard directory successfully created';
else
logger -t SDCardscripts 'Failed to create /media/sdcard directory'
exit 1;
fi
logger -t SDCardscripts 'Leaving /root/ServolineScripts/PrepareSDCard.sh script'
Aqui estão as linhas logg geradas quando eu conecto um cartão SD:
Nov 24 14:06:34 undefined kernel: [ 5546.379851] mmc0: host does not support reading read-only switch, assuming write-enable
Nov 24 14:06:34 undefined kernel: [ 5546.383558] mmc0: new high speed SDHC card at address 0007
Nov 24 14:06:34 undefined kernel: [ 5546.401181] mmcblk0: mmc0:0007 SD08G 7.42 GiB
Nov 24 14:06:34 undefined rsyslogd-2007: action 'action 17' suspended, next retry is Fri Nov 24 14:07:04 2017 [try http://www.rsyslog.com/e/2007 ]
Nov 24 14:06:34 undefined kernel: [ 5546.413258] mmcblk0: p1
Nov 24 14:06:34 undefined SDCardscripts: Entering /root/ServolineScripts/PrepareSDCard.sh script
Nov 24 14:06:35 undefined logger: /media/sdcard is already present. Deleting it.
Nov 24 14:06:35 undefined systemd-udevd[2003]: Process '/root/ServolineScripts/PrepareSDCard.sh' failed with exit code 1.
Nov 24 14:06:35 undefined systemd-udevd[2003]: Process '/bin/mount /dev/%K /media/sdcard' failed with exit code 32.
Então, o que eu entendo é:
- Udev insira meu script OK
- O Udev verificou com êxito se existe um arquivo
- O Udev falha ao executar o mkdir
Depois de executar este script, tentei:
root@undefined:~/ServolineScripts# cd /media
root@undefined:/media# ls -l
total 0
Nenhum comentário ...
Finalmente, eu tentei apagar as linhas para verificar se o / media / sdcard já existe (todos os primeiros if e elif)
e neste caso, o processo falha na execução do mkdir.
Estes sintomas são quando eu faço o plugin do µSdcard, mas se eu executar o script digitando bash -xe /root/ServolineScripts/PrepareSDCard
, aqui está o que eu tenho:
+ logger -t SDCardscripts 'Entering /root/ServolineScripts/PrepareSDCard.sh script'
+ '[' -d /media/sdcard ']'
+ logger '/media/sdcard is already present. Deleting it.'
+ rm -rf /media/sdcard
+ mkdir -p /media/sdcard
+ '[' 0 -eq 0 ']'
+ logger -t SDCardscripts '/media/sdcard directory successfully created'
+ logger -t SDCardscripts 'Leaving /root/ServolineScripts/PrepareSDCard.sh script'
(E, obviamente, é bem sucedido em executar o mkdir e o / media / sdcard / foi criado ...)
* Se você tiver alguma idéia sobre onde está o problema ... ou qualquer coisa que possa me ajudar a depurar isso ... *
(Já faz 4 dias que estou nisso ... Eu até tentei restaurar o Beagle com uma nova imagem ... :-()
P.: Eu já vi que o retorno diferente que eu escrevi não é o bom comando ... se você sabe como quebrar um script enquanto retorna um valor eu levo isso! mas este é um segundo assunto ...