
Preciso executar um script (Tcl ou qualquer outro) em uma máquina Unix remota, a partir de um shell de comando (local) do Windows, e quero que o stdout/stderr do script apareça na CLI do Windows. O código de saída também seria útil.
Isso é possível usando ssh (putty)? Ou por qualquer outro meio?
Responder1
Este é o padrão para SSH. Se você deseja redirecionar a saída remotamente, coloque o símbolo de redirecionamento (normalmente ">") entre aspas do comando.
Por exemplo:
ssh remote_host "ls > /tmp/file_on_remote_host.txt"
Para salvar a saída localmente no host Windows,
ssh remote_host "ls" > .\file_on_local_host.txt
Para combinar stderr remotamente e salvá-lo e stdout localmente,
ssh remote_host "ls 2>&1" > .\combined_output_on_local_host.txt
Responder2
O que eu estava procurando é o chute lateral do Putty,plink.exe. Ao contrário do putty, que atua como um emulador de terminal, plink
atua como um programa CLI normal (não interativo).
Usando-o, eu poderia fazer isso cmd.exe
e obter a saída do comando remoto salva localmente.
\> plink remote_host "ls -l" > log.txt
O melhor de tudo é que isso funciona parasshassim comotelnet!
Apenas para fins de referência, estas são as opções disponíveis:
PuTTY Link: command-line connection utility
Release 0.59
Usage: plink [options] [user@]host [command]
("host" can also be a PuTTY saved session name)
Options:
-V print version information and exit
-pgpfp print PGP key fingerprints and exit
-v show verbose messages
-load sessname Load settings from saved session
-ssh -telnet -rlogin -raw
force use of a particular protocol
-P port connect to specified port
-l user connect with specified username
-batch disable all interactive prompts
The following options only apply to SSH connections:
-pw passw login with specified password
-D [listen-IP:]listen-port
Dynamic SOCKS-based port forwarding
-L [listen-IP:]listen-port:host:port
Forward local port to remote address
-R [listen-IP:]listen-port:host:port
Forward remote port to local address
-X -x enable / disable X11 forwarding
-A -a enable / disable agent forwarding
-t -T enable / disable pty allocation
-1 -2 force use of particular protocol version
-4 -6 force use of IPv4 or IPv6
-C enable compression
-i key private key file for authentication
-noagent disable use of Pageant
-agent enable use of Pageant
-m file read remote command(s) from file
-s remote command is an SSH subsystem (SSH-2 only)
-N don't start a shell/command (SSH-2 only)
-nc host:port
open tunnel in place of session (SSH-2 only)
Responder3
Sim, se você usar o cliente putty ssh, verá qualquer saída de linha de comando que seu script produzirá. Para obter o código de saída após a execução do script, digite:
echo $?
Responder4
Mais uma resposta:
Salve todos os seus comandos do Linux emcmdlist.txtarquivo e use o comando abaixo.
plink.exe -ssh -pw senha[e-mail protegido] saída.txt
senha==senha para login do dispositivo
sem nome==nome de usuário para o login do dispositivo
1.2.3.4==endereço IP do dispositivo
Após a execução deste comando, todos os seus comandos cmdlist.txt serão executados no dispositivo remoto e a saída será salva no arquivo chamado output.txt
Certifique-se de manter plink.exe e cmdlist.txt no mesmo diretório e apontar o prompt do DOS para o mesmo diretório.