Olá gafanhotos, quanto tempo.
Sempre que apareço por aqui é porque passei por uma situação inusitada que tive de resolver. Como sempre, venho compartilhar a resolução para que ninguém mais tenha que se matar procurando nas páginas remotas do Google ou no Stack Overflow.
Imaginem que uma gaveta USB de backup parou de reconhecer em um servidor. Agora e se este servidor ficar em um data center, onde ninguém pode ir lá desconectar e reconectar?
Reiniciamos a máquina?
Mas e se a operação for 24×7?
Seus problemas acabaram!
Garimpando consegui entender a estrutura onde fica armazenada os dados dos dispositivos USB e dar um jeito de reiniciá-los!
Segue o script:
#!/bin/bash # script criado por @fabiolrodriguez - https://tchubirabiron.wordpress.com/ # Reiniciando as portas USB 2.0 for i in $(ls /sys/bus/pci/drivers/ehci_hcd/ | grep : ) do echo $i >/sys/bus/pci/drivers/ehci_hcd/unbind echo $i > /sys/bus/pci/drivers/ehci_hcd/bind done # Reiniciando as portas USB 3.0 for i in $(ls /sys/bus/pci/drivers/xhci_hcd/ | grep : ) do echo $i > /sys/bus/pci/drivers/xhci_hcd/unbind echo $i > /sys/bus/pci/drivers/xhci_hcd/bind done # Reiniciando as portas para hub USB for i in $(ls /sys/bus/pci/drivers/ehci-pci | grep : ) do echo $i > /sys/bus/pci/drivers/ehci-pci/unbind echo $i > /sys/bus/pci/drivers/ehci-pci/bind done
P.S – Caso o dispositivo não exista, por exemplo no caso do USB 3.0, o script apenas vai dar um erro para este dispositivo.
P.S 2 – Script testado em Fedora e CentOS, porém deve funcionar em outros distribuições ou necessitar de pequenos ajustes.
Até a próxima!