Linux

Como reiniciar as portas USB no Linux


Botão Pânico

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!

KVM, Linux

Como adicionar um disco físico a uma máquina virtual KVM


kvm

Quanto tempo queridos gafanhotos.

Como sempre surgiu uma necessidade no meu dia a dia que resolvi documentar e compartilhar a solução.

Primeiramente, vamos supor que possuímos em nosso ambiente de virtualização uma máquina virtual chamada “maquinadomal”.

Lembrando que para listar suas máquinas KVM, basta rodar um simples:


virsh list

Agora que sabemos o nome da VM que queremos adicionar o disco, vamos editar suas configurações:


virsh edit maquinadomal

E adicionar o disco, lembrando que /dev/sdb é um exemplo, ajuste ao seu ambiente:


<disk type='block' device='disk'>
<driver name='qemu' type='raw' cache='none'/>
<source dev='/dev/sdb'/>
<target dev='vdb' bus='virtio'/>
</disk>

Após salvar o arquivo, podemos reiniciar a VM para que o disco apareça, ou simplesmente adicioná-lo a quente:


virsh attach-disk maquinadomal /dev/sdb vdb

Pronto, agora o disco está apresentado e irá aparecer na máquina virtual, restando apenas criar as partições desejadas, formatar e montar.

Até a próxima!

Linux

Problemas com acentos dentro do Google Chrome no Fedora 20


cabelosA algum tempo sofri com um bug em meu notebook de trabalho que estava me fazendo arrancar os cabelos brancos.

Um belo dia eu rodei um yum upodate, e continuei minhas atividades, numa boa. No dia seguinte liguei meu Pc, fui acessar o Chrome e, para a minha surpresa, nada de acentos.

Pesquisei horrores, encontrei várias soluções de contorno, mas nada se mostrava eficaz. Cheguei ao ponto de migrar meus aplicativos de trabalho para o Firefox, enquanto não resolvia o caso.

Depois de alguns dias sem usar o Chrome, resolvi pesquisar até encontrar um ser abençoado em uma lista de e-mail que mostrou a solução:

Em seu ambiente gráfico, navegue pelo menu até Configurações > Seletor de método de entrada.

Para os acentos funcionarem no Google Chrome, o método tem que estar em iBus, mas aqui estava como X compose table.

Foi só alterar que funcionou na hora, sem precisar nem deslogar da sessão (XFCE). Testei no Cinnamon e também foi efetivo.

Até a próxima!

Linux

Usando o grep para excluir linhas em branco e comentários


No artigo de hoje teremos uma dica rápida, de como extrair apenas as linhas sem comentário e que tenham dados.


grep -v '^$\|^\s*\#' arquivo.conf

Por exemplo:


cd /etc/httpd/conf
grep -v '^$\|^\s*\#' arquivo.conf

E o resultado:


ServerRoot "/etc/httpd"
Listen 80
Include conf.modules.d/*.conf
User apache
Group apache
ServerAdmin root@localhost
<Directory />
AllowOverride none
Require all denied
</Directory>
DocumentRoot "/var/www/html"
<Directory "/var/www">
AllowOverride None
Require all granted
</Directory>
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
<IfModule dir_module>
DirectoryIndex index.html
</IfModule>
<Files ".ht*">
Require all denied
</Files>
ErrorLog "logs/error_log"
LogLevel warn
<IfModule log_config_module>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
<IfModule logio_module>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
</IfModule>
CustomLog "logs/access_log" combined
</IfModule>
<IfModule alias_module>
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
</IfModule>
<Directory "/var/www/cgi-bin">
AllowOverride None
Options None
Require all granted
</Directory>
<IfModule mime_module>
TypesConfig /etc/mime.types
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
</IfModule>
AddDefaultCharset UTF-8
<IfModule mime_magic_module>
MIMEMagicFile conf/magic
</IfModule>
EnableSendfile on

Vejam como o arquivo de configuração do Apache, que é bastante extenso e documentado, trouxe apenas as configurações ativas.

Até a pŕoxima.

Linux

Verificar dependências de pacotes no Red Hat / CentOS


Descobri um jeito fácil de consultar quais programas dependem de determinado pacote.

Basta utilizar o comando repoquery:


repoquery --whatrequires firefox

A saída será algo parecido com isso:


firefox-0:24.5.0-1.el6.centos.i686
firefox-0:24.5.0-1.el6.centos.x86_64
R-0:2.13.0-2.el6.rf.x86_64
abook-0:0.6.0-0.9.pre2.el6.x86_64
firefox-0:17.0.10-1.el6.centos.i686
firefox-0:17.0.10-1.el6.centos.x86_64
freewrl-0:1.22.12-0.4.pre2.el6.i686
freewrl-0:1.22.12-0.4.pre2.el6.x86_64
freewrl-plugin-0:1.22.12-0.4.pre2.el6.x86_64
libEAI-0:1.22.12-0.4.pre2.el6.i686
libEAI-0:1.22.12-0.4.pre2.el6.x86_64
libproxy-mozjs-0:0.3.0-4.el6_3.x86_64
mozilla-https-everywhere-0:3.4.5-1.el6.noarch
mozilla-vlc-0:1.1.5-2.el6.rf.x86_64
mozilla-vlc-0:1.1.6-1.el6.rf.x86_64
mozilla-vlc-0:1.1.8-1.el6.rf.x86_64
mozilla-vlc-0:1.1.9-1.el6.rf.x86_64
mozilla-vlc-0:1.1.11-1.el6.rf.x86_64
mozilla-vlc-0:1.1.13-1.el6.rf.x86_64
spice-xpi-0:2.7-24.el6.x86_64
xulrunner-devel-0:17.0.10-1.el6.centos.i686
xulrunner-devel-0:17.0.10-1.el6.centos.x86_64

Agora você já pode analisar o impacto da remoção de um determinado pacote.
Até a próxima!