![在 Unix 上远程运行脚本,在本地获取输出?](https://linux22.com/image/1236191/%E5%9C%A8%20Unix%20%E4%B8%8A%E8%BF%9C%E7%A8%8B%E8%BF%90%E8%A1%8C%E8%84%9A%E6%9C%AC%EF%BC%8C%E5%9C%A8%E6%9C%AC%E5%9C%B0%E8%8E%B7%E5%8F%96%E8%BE%93%E5%87%BA%EF%BC%9F.png)
我需要从(本地)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 提示符指向同一目录。