Eu tenho um HTPC baseado no Ubuntu executando o Samba (o servidor). Outros PCs na rede local (os clientes) se conectam aos compartilhamentos Samba no NAS e os usam como unidades de rede (todos esses PCs executam o Win 7).
Eu gostaria que o servidor dormisse quando não estiver sendo usado de forma alguma. Configurei com êxito os clientes para ativá-lo quando eles se conectam à rede local; o que causa problemas é dormir. Eu preciso de uma maneira de determinar com segurança que nenhum dos compartilhamentos do Samba está atualmente em uso. Tentei usar os ganchos pré / pós-executivo smb.conf
junto com um script personalizado para acompanhar os compartilhamentos usados atualmente e que funcionavam na maioria das vezes. Exceto no caso em que o cliente não é desligado, mas hibernado. Quando isso acontece, o gancho pós-exec nunca é chamado. E esse é um grande problema, porque metade dos clientes na rede local são laptops.
Desde então, desenvolvi um trabalho cron simples, que é executado a cada dois minutos. Sua tarefa é detectar se alguém está usando o servidor de alguma forma (incluindo compartilhamentos Samba montados); caso contrário, ele colocará o servidor em suspensão. Até agora, tenho analisado a saída de smbstatus -S
, mas isso ainda mostra que os compartilhamentos estão em uso, mesmo depois que o cliente que deveria usá-los é hibernado e sai da rede. Além disso, quando eu faço um netstat -tp | grep smbd
nesse momento, a conexão com o cliente infrator está presente na saída, aparecendo como "ESTABELECIDO", com o IP correto e tudo.
Neste ponto, estou prestes a receber os IPs dos clientes da netstat
saída e enviá-los por ping, um por um, para verificar se os clientes estão realmente funcionando: o / Eu realmente gostaria de evitar fazer isso , como a solução atual já é bastante vodu.
Por favor, se alguém tiver uma idéia do que mais posso fazer, qualquer ajuda seria muito apreciada.