o ssh para executar o shell script na máquina remota e, em seguida, copie a saída de uma máquina local
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-
- Execute o shell script
MachineB
a partir deMachineA
. - 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.
- 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 deMachineB
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
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!