É possível executar um comando bash do Windows através de uma conexão samba?

3

Agora, antes de você terminar de pensar "Querido Deus! Por que você quer permitir isso?!?", estou imaginando se é possível.

O que eu estou tentando resolver, poderia ser resolvido de outras formas, mas isso o coloca no campo funcional de outros administradores que não são nix-y no meu local de trabalho.

O que eu quero alcançar é: Tenha um atalho / arquivo / what-have-você pode ser clicado duas vezes (para executá-lo), através de uma conexão samba, e ter umount /path/to/ext-drive executado.

Isso pode cair em muitas áreas, uma delas é o já mencionado "Por que? !!?!", e eu acabei de lembrar que a montagem é feita através do cron do root, então ele pode nem ser capaz para ser desmontado via algum outro usuário smb nomeado.

Praticamente, estou pensando em criar um link para um arquivo .sh fora dos compartilhamentos, na tentativa de isolar qualquer coisa com o tempo de execução dos ajustes do usuário do samba.

Alguma opinião?

editar

Devo acrescentar que o USB ext. unidade é montada através do script que faz os backups. Não está montado na conexão da unidade. Espero que isso seja uma maneira de contornar as falhas aleatórias de desmontar que surgiram nas últimas semanas.

Eu também pensei que poderia colocar algo no cron para verificar se o processo de backup parou de ser executado, se a unidade ainda está conectada e, em caso afirmativo, desmonte-a.

outra edição

Estou começando a perceber a futilidade dessa questão. Como eu disse nos comentários abaixo, o OP aqui, clicando duas vezes em um arquivo no compartilhamento do meu computador, não executará algo no servidor.

Solução para o problema, não a questão

Vou aceitar a resposta do @slm, pois é a resposta à pergunta feita. "É possível executar um comando bash do Windows através de uma conexão samba?" Não. Não, você não pode. (como observado nos comentários abaixo deste OP também)

Mas para resolver o problema, eu fiz isso - e vou executá-lo via cron a cada hora.

#!/bin/bash

if [ ! -f "/path/to/locking/file.txt" ]
then
    if mount | grep /pathTo/backupDriveMount ; then
        # Is still Mounted
        echo "Drive Still Mounted - Attemping unmount" >> "/path2/logFile.log"
        TEST="$(mount | grep /pathTo/backupDriveMount | cut -d' ' -f1)"
        echo "Unmounting ${TEST}"
        umount ${TEST}
    fi
fi

Em inglês

  1. se o arquivo de bloqueio não existir, verifique as montagens do caminho para o ponto de montagem de backup.
  2. Se estiver lá, extraia a unidade / partição
  3. Desmontar o local extraído.
por Mark 07.06.2018 / 01:52

1 resposta

3

Isso não é possível. Você não pode executar um executável no servidor Linux remotamente dessa maneira pela conexão do Samba.

Se você realmente deseja alcançar algo assim, só é possível conseguir isso de uma das duas maneiras que vem à mente:

  1. Ao executar remotamente o comando via PuTTY / SSH, efetue login na caixa do Linux, executando o comando e saindo.

    $ ssh linux-server umount /path/to/ext-drive
    
  2. Configurando um executável que poderia ser executado por meio de um servidor da Web, onde eles estariam acionando o comando umount /path/to/ext-drive por meio de um tipo de configuração CGI-BIN.

NOTA: A segunda opção acima pode ser considerada "perigosa", e eu provavelmente desencorajaria qualquer um a usá-la, mas eu a usei no passado para expor alguns comandos básicos que eu queria executar remotamente e o SSHing na caixa não era uma opção.

Uma abordagem diferente

A melhor alternativa é utilizar um montador automático no servidor Linux. Com um montador automático, sempre que alguém tenta acessar um diretório, uma ação pode ser acionada para montar uma determinada partição no espaço de diretório do servidor Linux. Depois de um tempo especificado de inatividade, o diretório montado automaticamente pode ser desmontado automaticamente pelo automounter.

Veja alguns desses guias para mais detalhes sobre como configurar um montador automático:

por 07.06.2018 / 05:13