Execute o script Bash no cliente a partir do servidor local?

1

Eu escrevi um script bash para o meu uso e funciona. Eu quero que esse script seja colocado em algum servidor na minha rede e chame esse script em laptops / desktops na minha própria rede para executar. De qualquer forma eu fiz um caminho para isso também como abaixo.

Etapas:

  1. Instale o servidor da web Apache no servidor local.
  2. Coloque o script no servidor da web.
  3. Torne o script executável chmod a+x .
  4. Abra o terminal na máquina cliente e instale o pacote curl
  5. Agora, a partir do próprio terminal do cliente, execute o comando como:

    sudo curl -kL http://serverip/script.sh | bash
    

Funciona bem, mas o problema é que, no meu script, usei comandos de entrada do usuário, como "variável de leitura", que não funcionam nesse cenário. Então, como fazer isso é o meu problema. Existe alguma maneira para mim?

    
por SAGAR 31.03.2014 / 10:23

3 respostas

1

Você pode usar:

bash -c "$(curl -kL http://serverip/script.sh)"

Isso executará o script na máquina local. Veja também man bash para entender porque usei a opção -c . Também aspas duplas são muito importantes neste caso.

Além disso, como @terdon disse em seu comentário , sudo curl é inútil. Se o script precisar de permissões sudo locais, você precisará usar sudo na frente do comando bash .

    
por Radu Rădeanu 31.03.2014 / 12:07
1

Eu acho que o que você quer é

wget http://server.com/scriptname.sh && bash scriptname.sh

Isso simplesmente baixará o script localmente e o executará.

    
por terdon 31.03.2014 / 20:16
0

Como sugerido no comentário de Radu, por que não usar ssh para iniciar seu script em seu servidor local?

Primeiro, instale openssh-server no sistema do seu cliente:

sudo apt-get install openssh-server

Então, a partir do seu servidor local:

ssh -t client_login@client_ip '/path_to_your_script/script.sh'

A opção -t no comando ssh -t forçará a alocação pseudo-tty.

    
por Sylvain Pineau 31.03.2014 / 11:20