通过 plink 在 Linux 上执行需要参数的本地脚本

通过 plink 在 Linux 上执行需要参数的本地脚本

是否可以(从 Windows)在远程 Linux 系统上执行带有参数的本地脚本?

以下是我得到的结果:

plink 1.2.3.4 -l root -pw mypassword -m hello.sh

有没有办法做同样的事情,但能够为 hello.sh 提供输入参数?

我尝试了很多方法,包括:

plink 1.2.3.4 -l root -pw mypassword -m hello.sh input1 input2

在这种情况下,plink 似乎认为 input1 和 input2 是它的参数......这是有道理的。

我有什么选择?

答案1

我遇到过同样的问题。

你可以简单地写下这一行

plink 1.2.3.4 -l root -pw pass " myscript.sh arg1 arg2"

例如,我必须运行一个脚本并提供两个文件作为参数。

plink 1.2.3.4 -l root -pw pass " myscript.sh path/to/file1 path/to/file2"

答案2

plink不作为运行脚本脚本;它只是将其内容作为单独的命令发送,因此无法传递参数。

您可以通过告诉 shell 将其 stdin 解释为一个文件来解决这个问题:

plink -T ... $SHELL /dev/stdin arg1 arg2 arg3 < hello.sh

答案3

更详细的描述(针对 ssh)参见此答案

C:>type script.sh
#!/bin/bash
cd /home/user
echo "hello ${1:-}" > hello.txt

C:>plink user@host -pw password "bash -s" < script.sh "world"

C:>plink user@host -pw password "cat /home/user/hello.txt"
hello world

相关内容