유닉스에서 원격으로 스크립트를 실행하고 로컬로 출력합니까?


44

(로컬) Windows 명령 셸에서 원격 Unix 시스템에서 (Tcl 또는 기타) 스크립트를 실행해야하며 스크립트의 stdout / stderr가 Windows CLI에 표시되기를 원합니다. 종료 코드도 유용합니다.

ssh (putty)를 사용하여 가능합니까? 아니면 다른 방법으로?

감사!

답변:


43

SSH의 기본값입니다. 출력을 원격으로 리디렉션하려면 명령 따옴표 안에 리디렉션 기호 (일반적으로 ">")를 넣으십시오.

예를 들면 다음과 같습니다.

ssh remote_host "ls > /tmp/file_on_remote_host.txt"

Windows 호스트에서 로컬로 출력을 저장하려면

ssh remote_host "ls" > .\file_on_local_host.txt

원격으로 stderr을 결합하여 저장하고 stdout을 로컬로 저장하려면,

ssh remote_host "ls 2>&1" > .\combined_output_on_local_host.txt

putty.exe로이 작업을 수행 할 수 있습니까? 즉, 터미널을 에뮬레이트하는 기본값과 달리 "일반적인"CLI 프로그램으로 작동합니다.
Cristi Diaconescu

Windows 2003 시스템에 퍼티를 넣고 명령 줄을 실행했습니다. 호스트는 시스템 관리 도구를 지원하기 위해 HP 버전의 SSH 서버를 설치했습니다. 원격 시스템에서 모든 것이 실행되는 것보다 SSH 클라이언트 만있는 경우
kmarsh

1
Windows 이외의 로컬 시스템에서도 작동합니다.
shiri

백 슬래시 경로를 제외하고는 그렇습니다.
kmarsh

20

내가 찾고있는 것은 putty 's side-kick, plink.exe 입니다. 터미널 에뮬레이터처럼 작동하는 퍼티와 달리 plink일반 (비 대화식) CLI 프로그램처럼 작동합니다.

그것을 사용 하여이 작업을 수행 cmd.exe하고 원격 명령 출력을 로컬로 저장할 수 있습니다.

\> plink remote_host "ls -l" > log.txt

무엇보다도, 이것은 telnet 뿐만 아니라 ssh 에서도 작동합니다 !

참조 목적으로 만 사용 가능한 옵션은 다음과 같습니다.

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)

3

예. putty ssh 클라이언트를 사용하면 스크립트가 생성하는 명령 행 출력이 표시됩니다. 스크립트가 실행 된 후 종료 코드를 얻으려면 다음을 입력하십시오.

echo $?

1

Windows 시스템에서 로그 파일을 얻는 다른 방법은 다음과 같습니다.-Unix 시스템에 Windows m / c 마운트 마운트 된 디렉토리에 스크립트 로그

Windows 용 tail과 동등한 UNIX를 얻으면 출력이 실시간으로 표시됩니다 .


0

하나 더 답변 :

모든 리눅스 명령을 cmdlist.txt 파일 에 저장 하고 아래 명령을 사용하십시오.

plink.exe -ssh -pw passwd uname@1.2.3.4 output.txt

passwd == 장치 로그인 암호

장치 로그인을위한 uname == username

1.2.3.4 == 장치 IP 주소

이 명령이 실행되면 모든 cmdlist.txt 명령이 원격 장치에서 실행되고 출력은 output.txt라는 파일에 저장됩니다.

plink.exe 및 cmdlist.txt를 동일한 디렉토리에 유지하고 dos 프롬프트가 동일한 디렉토리를 가리키고 있는지 확인하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.