Eu tenho um HTPC baseado no Ubuntu rodando o Samba (o servidor). Outros PCs na rede local (os clientes) se conectam aos compartilhamentos do Samba no NAS e os usam como unidades de rede (todos esses PCs executam o Win 7).
Eu gostaria de ter o servidor para dormir quando não está sendo usado de alguma forma. Eu configurei com sucesso os clientes para ativá-lo quando eles se conectam à rede local; a coisa que causa problemas é fazê-lo dormir. Eu preciso de uma maneira de determinar com segurança que nenhum dos compartilhamentos do Samba está atualmente em uso. Eu tentei usar ganchos pré / pós exec em smb.conf
junto com um script personalizado para acompanhar os compartilhamentos usados atualmente, e isso funcionava na maior parte do tempo. Exceto para o caso em que o cliente não é desligado, mas hibernado. Quando isso acontece, o gancho post exec nunca é chamado. E isso é um grande problema, porque metade dos clientes na rede local são laptops.
Desde então, desenvolvi uma tarefa cron simples que é executada a cada dois minutos. Sua tarefa é detectar se alguém está usando o servidor de alguma forma (incluindo compartilhamentos montados do Samba); caso contrário, coloca o servidor em repouso. Até agora eu estive analisando a saída de smbstatus -S
, mas isso ainda mostra que as ações estão em uso, mesmo depois que o cliente que deveria usá-las está hibernado e bem fora da rede. Além disso, quando eu faço um netstat -tp | grep smbd
naquele momento, a conexão ao cliente incorreto está presente na saída, aparecendo como "ESTABLISHED", com o IP correto e 'tudo.
Neste ponto, estou prestes a tirar os IPs dos clientes da saída netstat
e fazer o ping deles, um por um, para verificar se os clientes estão realmente ativos: o / I'd realmente gostaria de evitar fazer isso, já que a solução atual já é bem vodu.
Por favor, se alguém tem alguma idéia do que mais eu posso fazer, qualquer ajuda seria muito apreciada.