Executa a operação da shell através do shell seguro

0

É possível executar uma operação shell a partir de um script bash através de um shell seguro.

Aqui está um exemplo de por que você pode querer fazer isso. Vamos dizer que você tem um sistema operacional unix simples que você precisa apenas construir e rodar, mas você quer fazer todo o desenvolvimento em outra máquina. Eu quero escrever um script bash que tenha a seguinte funcionalidade:

scp file to location on other machine
ssh to other machine
cd into correct directory 
make 
run program
scp results to file on original computer
exit ssh

Isto é remotamente possível? (Pardon the Pun: p)

    
por Fantastic Mr Fox 17.12.2012 / 05:10

3 respostas

2

Como um exemplo direto do seu pseudocódigo,

scp file remote:/tmp/file
ssh remote 'cd /tmp; cat file >another; rm another'
scp remote:/tmp/another /tmp

Talvez você queira evitar o uso de arquivos temporários; Se você pode usar a entrada padrão e saída padrão para isso, você pode se safar com algo como

ssh remote 'remotescriptname' <input >output

... assumindo remotescriptname pode ler entrada padrão e acabar produzindo o resultado na saída padrão. (Você vai querer evitar comandos ruidosos como make de produzir qualquer saída na saída padrão; make -s é seu amigo.)

Você notará que pode ter um fragmento complexo de script de shell entre aspas simples. Não precisa ser um programa remotescriptname se você preferir colocar toda a linha de comando dos comandos individuais entre as aspas simples, como no meu primeiro exemplo; mas você pode querer de qualquer maneira, porque um script auto-contido é mais fácil de depurar e manter.

    
por 17.12.2012 / 05:30
1

Sim, isso é possível. Por exemplo:

$ echo 'date' | ssh localhost
Pseudo-terminal will not be allocated because stdin is not a terminal.
Password:
Sun Dec 16 22:15:08 CST 2012

Eu sugiro que você crie um script no lado remoto que fará as compilações e o scp de volta ao sucesso para minimizar a quantidade de comandos remotos que você precisa enviar. Além disso, criar uma chave RSA sem senha também facilitará sua vida.

EDITAR:

Enquanto estivermos no assunto, você pode se interessar por alguns desses programas.

distcc : distribuir construções em várias máquinas

buildbot : Cria automaticamente código à medida que é registrado em qualquer número de máquinas / sistemas operacionais e executa testes de unidade, etc.

    
por 17.12.2012 / 05:20
1

ssh user1 @ server1 '/scripts/backup.sh' executará o script na máquina remota. Você pode simplesmente scp "backup.sh" no local requerido, invocar ssh e sair

    
por 17.12.2012 / 05:21