quem tem arquivos abertos em um servidor linux

2

Eu tenho a tarefa bastante comum de encontrar quem tem arquivos abertos em nosso servidor de arquivos Linux (Ubuntu) em nosso ambiente Windows.

Nós usamos o Samba na rede e eu uso o Putty da minha estação de trabalho para estabelecer uma janela de shell para executar scripts bash.

Eu tenho usado algo assim para encontrar quais arquivos estão abertos: (isso retorna uma lista de ids de processo com cada arquivo aberto)

Robert:$ sudo lsof | grep "/srv/office/some/folder"

Depois, eu sigo com algo assim para mostrar quem é o proprietário do processo: (isso retorna o nome da máquina na rede usando o protocolo IP4 que possui o processo)

Robert:$ sudo lsof -p 27295 | grep "IPv4"

Agora eu conheço o cliente do Windows que tem um arquivo aberto e pode agir a partir daí.

Como você pode dizer isso não é difícil, mas consome tempo. Eu preferiria ter um aplicativo do windows que eu pudesse executar que me desse o que eu queria.

Então, eu estive pensando em criar algum processo que eu possa rodar no Linux que escuta em uma porta e então retorne uma lista limpa de todos os arquivos abertos com o endereço IP do host que tem o arquivo aberto. Em seguida, um pequeno aplicativo cliente do Windows que pode enviar a solicitação na porta.

Parece que isso deve ser uma necessidade muito comum, mas não consigo encontrar nada parecido com isso que tenha sido feito antes.

Alguma sugestão?

    
por Robert 05.08.2014 / 20:29

1 resposta

0

eu. Se você precisar fazer essa tarefa em apenas um computador, eu faria assim:

  1. Crie uma conta linux para tais tarefas ("sambaadmin" por exemplo), para melhor segurança
  2. Configurar massa para login automático nessa conta
  3. Escreva seu script que faz suas tarefas administrativas ( /home/sambaadmin/see_clients.sh , por exemplo). Eu faria suas tarefas assim:

    smbstatus -p read -p "Pressione [Enter] para sair ..." sair

  4. Adicione permissões de execução a ele ( chmod +x /home/sambaadmin/see_clients.sh )

  5. Chame esse script no final do arquivo /home/sambaadmin/.bash_profile. .bash_profile é executado automaticamente após o login do usuário.

  6. Crie uma mensagem de texto no seu desktop do Windows para essa sessão de login automática

Depois de fazer isso - o seu shourtuc abrirá o putty, faça o login, seu "script de tarefa administrativa "será executado, você o verá na janela do putty e depois que você pressionar Enter - a sessão terminará.

II. Se você usa muitos computadores na empresa - escreva aplicativos web simples em python ou use algum software de gerenciamento de web de servidor (Webmin por exemplo).

III. Você pode usar o cron para executar cada minuto ou dois scripts como este:

smbstatus -p > /somewhere/sambashare/openfiles.txt

Você pode criar um atalho para esse arquivo no Windows e apenas abri-lo para ver o que está acontecendo.

\sambaserver\sambashare\openfiles.txt
    
por 22.08.2014 / 18:51