Como faço para detectar uma inserção de disquete no RHEL 7 e executar um script?

2

Eu tenho uma VM RedHat 7 em execução na infraestrutura do VMware ESXi 6. Eu preciso detectar um evento de inserção de disquete e, em seguida, lançar um script com base nesse evento de inserção.

Minha abordagem inicial foi tentar usar as regras do Udev para acionar a execução do script na inserção do disquete, mas o evento nunca parece ter sido iniciado.

/etc/udev/rules.d/99-my.rules

SUBSYSTEM=="block", KERNEL=="fd0", ACTION=="change", RUN+="sh -c /my-custom-script"

Quando isso não funcionaria, tentei contornar o problema e, em vez de executá-lo na inserção, escrevi uma tarefa do cron que tenta montar o disquete a cada dois minutos e testa se o ponto de montagem possui determinados arquivos. isto. Isso, no entanto, causa alguma saída desagradável quando não há nenhum disquete inserido:

end_request: I/O error, dev fd0, sector0

Então, encontrei-me tentando descobrir por que a regra do Udev não está funcionando. A minha abordagem com a regra do Udev está errada ou existe algum outro meio para conseguir isso?

    
por droche 17.08.2016 / 14:21

1 resposta

0

Pelo que eu sei udev, não fornece nenhum meio para monitorar unidades de disquete. As unidades de disquete não fornecem nenhum meio para detectar a inserção, ou seja, a detecção da inserção de um disco requer pesquisa contínua do inversor.

O utilitário diskd faz o que você precisa. Ele pesquisa continuamente a unidade e sai ou executa um comando na inserção. É parte de fdutils , que pode ser instalado a partir dos repositórios sob o Debian. No RHEL / Fedora, você terá que compilar as fontes.

Uso:

diskd [-d drive] [-i interval] [-e command]

O seguinte deve monitorar a unidade de um disco e, na inserção, montá-lo e depois sair. Eu não tentei isso, porque eu só tenho uma unidade de disquete IDE (LS-120 SuperDisk).

diskd -d /dev/fd0 -e "udisks --mount /dev/fd0 --mount-fstype=vfat"

Deve-se observar que você precisa ser um membro do grupo floppy para poder executá-lo como usuário não-root, pois precisa de acesso direto ao dispositivo de disquete (por exemplo, /dev/fd0 ). Ele usa o FDPOLLDRVSTAT ioctl (consulte man 4 fd ) para pesquisar o dispositivo.

Além disso, a página de manual / documentação tem o seguinte aviso:

This program works by switching the motor on for a very short interval, and then seeking to track -1. This might damage hardware in the long run. Amigas, which also use these techniques, are known for having problems with their disk drives no longer spinning up properly after a few month of usage.

Não tenho certeza se isso é realmente um problema sério, mas ter uma unidade sobressalente na mão provavelmente é útil se você for usar isso em uma configuração de produção. Eles não são mais tão caros, né?

(O utilitário fdmountd parece muito antigo e eu sou muito cético em relação a se ele funciona com discos formatados com FAT12 em um kernel "mais recente").

    
por 26.08.2016 / 19:20