我本质上想在机器 A 上运行一个脚本,该脚本将通过 SSH 连接到机器 B,在 B 上执行命令,并将输出返回到机器 A。
所以我正在创建一个 csh 脚本来做到这一点,如果可能的话。
例如,此答案中的此解决方案适用于命令行:
ssh user@host << 'ENDSSH'
ls -l
ENDSSH
Run Code Online (Sandbox Code Playgroud)
我可以验证它是在远程而不是本地运行 ls。
但是,我希望能够在本地运行的 csh 脚本中的反引号内执行此操作。那可能吗?
我知道可以通过 SSH 连接并运行远程脚本,但这不是我的情况。
我还听说可以通过 SSH 发送本地存储的第二个脚本(我也没有弄清楚),但我喜欢将所有命令都包含在原始脚本中的想法,因此是 HEREDOC。
我知道这是一个非常特别的问题,但如果有办法,知道如何做会很酷。
行不通的事情
1)
`ssh user@host<<'ENDSSH'`
`echo "ls -l"`
`echo "ENDSSH"`
Run Code Online (Sandbox Code Playgroud)
这给出了错误:
stty: standard input: Invalid argument.
stty: standard input: Invalid argument.
Warning: Command not found
然后它在ls -l本地运行,然后它尝试在ENDSSH本地运行,当然由于找不到命令而失败。
2)
`ssh user@host<<'ENDSSH'`
echo "ls -l"
echo "ENDSSH"
Run Code Online (Sandbox Code Playgroud)
与上面相同的问题,除了它只显示ls -l和ENDSSH作为文本。有道理……因为 HEREDOC …