在 Unix 上远程运行脚本,在本地获取输出?

在 Unix 上远程运行脚本,在本地获取输出?

我需要从(本地)Windows 命令 shell 在远程 Unix 机器上运行(Tcl 或任何其他)脚本,并且我希望脚本的 stdout/stderr 显示在 Windows CLI 中。退出代码也很有用。

可以使用 ssh (putty) 吗?或者通过其他方式?

答案1

这是 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

答案2

我要找的是 Putty 的助手,链接器. 与充当终端仿真器的 putty 不同,plink它充当普通(非交互式)CLI 程序。

使用它,我可以执行此操作cmd.exe并在本地保存远程命令输出。

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

最重要的是,这适用于远程控制远程登录

仅供参考,这些是可用的选项:

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 $?

答案4

还有一个答案:

保存所有 Linux 命令命令列表文件并使用以下命令。

plink.exe -ssh -pw 密码[电子邮件保护] 输出.txt

密码==设备登录密码

尤纳姆==设备登录的用户名

1.2.3.4==设备 IP 地址

执行此命令后,所有 cmdlist.txt 命令都将在远程设备上执行,并且输出将保存在名为 output.txt 的文件中

确保将 plink.exe 和 cmdlist.txt 保存在同一目录中,并且将 dos 提示符指向同一目录。

相关内容