o ssh para executar o shell script na máquina remota e, em seguida, copie a saída de uma máquina local

StackOverflow https://stackoverflow.com//questions/11680956

  •  12-12-2019
  •  | 
  •  

Pergunta

Eu estou usando plink para executar o script de shell remoto MachineB.E shell script está lá no MachineA(Windows Box).

C:\PLINK>plink uname@MachineB -m test.sh 
Using keyboard-interactive authentication. 
Password: 
Using keyboard-interactive authentication. 
Your Kerberos password will expire in 73 days. 

E que a shell script gera a saída em um text file(aa.txt) no MachineB e que fica armazenado em /export/home/uname/aa.txt

Então a minha pergunta é- Existe alguma maneira que eu possa copiar o aa.txt file a partir de MachineB para MachineA logo que o script tiver concluído todas as suas tarefas usando o ssh.Ou precisamos colocar todas essas coisas em arquivo de Lote do Windows?

Para Declaração do Problema é como esta-

  1. Execute o shell script MachineB a partir de MachineA.
  2. Então, aguarde para o script de shell para concluir sua tarefa, no meu caso, ele irá escrever a saída para um arquivo de texto.
  3. E depois que o script do shell de concluir todas as suas tarefas significa que ele terminou de escrever tudo para um arquivo txt, em seguida, copie esse arquivo txt para o MachineA a partir de MachineB

Todas as sugestões serão apreciadas em como eu posso conseguir o cenário acima?

Atualização:-

Assim, Suponha que se é este o conteúdo test.sh ficheiro de script da shell e também depois de adicionar pscp no final do script, em seguida, ele deve ser como este?

#!/bin/bash 
export HIVE_OPTS="$HIVE_OPTS -hiveconf mapred.job.queue.name=hdmi-technology" 
hive -S -e 'SELECT count(*) from testingtable2' > aa.txt 
pscp uname@MachineB:/export/home/uname/aa.txt c:\documents\foo.txt

Então, eu sou a execução de um ramo de consulta no script acima, e cuja saída é ficar armazenados em aa.txt e assim que a consulta for concluída e a saída é armazenada em aa.txt arquivo, ele vai para a fourth line of pscp o que fará a transferência de aa.txt arquivo para a minha máquina local do windows dentro da pasta documentos.Estou certo?Este será todo o processo?

E se o processo acima é certo que entendi, então eu posso simplesmente ir para o windows prompt de comando, e fazer como abaixo e vai fazer exatamente o mesmo processo.Direito?

C:\PLINK>plink uname@MachineB -m test.sh 
Using keyboard-interactive authentication. 
Password: 
Using keyboard-interactive authentication. 
Your Kerberos password will expire in 73 days. 

Atualizado Novamente:-

Então eu preciso para criar um arquivo bat, e suponha que este é o abaixo test.bat arquivo, de modo que o conteúdo deve ser como este em que test.bat arquivo

plink uname@MachineB -m test.sh 
pscp  uname@MachineB:/export/home/uname/aa.txt c:\documents\foo.txt
Foi útil?

Solução

Você pode usar scp para baixar o arquivo após a execução.Se o programa de configuração winsshd num computador com o windows e append um comando de cópia no test.sh arquivo:

scp /export/home/uname/aa.txt user@windowsmachine.com:/homedir

O arquivo será transferido após a conclusão.

Da mesma forma, você pode usar um windows scp cliente como pscp na sua máquina windows, você pode extrair o arquivo da máquina linux:

pscp uname@MachineB:/export/home/uname/aa.txt c:\documents\foo.txt

Então em uma máquina windows, tem um script em lotes:

plink uname@MachineB -m test.sh 
pscp  uname@MachineB:/export/home/uname/aa.txt c:\documents\foo.txt

Outras dicas

Só para acrescentar ao que já foi dito, estou executando algo muito semelhante e usar o seguinte formato (a partir de um script de comandos):

plink -ssh usuário@ -pw senha -m yourScript.sh

pscp -sftp -pw senha user@IP-Address:/path/to/remote/file C:\path o\local\save\directory

Esse segundo comando é uma linha, mas pode não render como essa aqui.É claro, substitua o Endereço IP, usuário e senha com os valores apropriados para o seu login :-)

Espero que ajude!

EDITAR - Desculpe, só percebi isso EXATA a resposta já foi dada.Parabéns!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top