web-dev-qa-db-ja.com

Linuxでplinkを介して引数を必要とするローカルスクリプトを実行する

リモートLinuxシステムで引数付きのローカルスクリプトを(Windowsから)実行することは可能ですか?

これが私が得たものです:

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がその引数であると考えているようです。これは理にかなっています。

私のオプションは何ですか?

4
c_maker

私も同じ問題を抱えていました。

あなたは単にこの行を書くことができます

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

たとえば、スクリプトを実行して、パラメーターとして2つのファイルを指定する必要がありました。

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

1
Hari

より詳細な説明については(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
0
martonbognar

plinkはスクリプトをshスクリプトとして実行しません。内容を個別のコマンドとして送信するだけなので、引数を渡すことはできません。

これを回避するには、シェルにstdinをファイルであるかのように解釈するように指示します。

plink -T ... $Shell /dev/stdin arg1 arg2 arg3 < hello.sh
0
user1686