是否可以(从 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