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


Answers:


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

我要寻找的是腻子的辅助功能plink.exe。与腻子不同,腻子的作用类似于终端仿真器,plink而普通的(非交互式)CLI程序则起作用。

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

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

最棒的是,这对sshtelnet都适用

仅供参考,以下是可用的选项:

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(根据UNIX的风格,可以使用Samba服务器来实现)-使用任何远程客户端从Windows运行脚本-具有脚本登录到挂载目录

如果获得Windows的 UNIX等效的tail,则可以实时查看输出。


0

还有一个答案:

将所有Linux命令保存在cmdlist.txt文件中,然后使用以下命令。

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

passwd == 设备登录密码

uname == 设备登录名

1.2.3.4 == 设备IP地址

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.