web-dev-qa-db-ja.com

ローカルパラメータ値を使用してリモートスクリプトを実行する

このタスクを自動化するにはどうすればよいですか?

1)Aにいます。2)BにSSHで接続します。3)Bでスクリプトを実行します。これには、Aで認識されているパラメータが必要です。

まず、sshで接続を開いたときに値を送信できると思いました。次に、おそらく1)と2)の間のより単純な方法で、スクリプト全体をBの同じ場所にscpします(古いスクリプトを置き換える)。しかし、それでも、Bのスクリプトexecuteはどうすればよいですか? (つまり、最後のステップを自動化する方法です。もちろん、sshの後で手動で実行することもできます。)

もう1つの考えは、おそらくsshを完全に破棄することです-私はBにWebページを持っているので、「フードの下」のWebインターフェイスを介してスクリプトを呼び出すことができますか?

それとも、まったく異なる方法でそれを行いますか?

8
Emanuel Berg
myparameter=foobar
ssh user@server "myscript $myparameter"

これにより、サーバーでmyscript foobarが実行されます。

11
Michael Hampton

(これは 承認された回答に対する私のコメント のフォローアップです。)

$myparameterにはスペースが含まれ、サーバー側で分割されます。 Bashのprintfには%q使用できる形式。例:

$ myparameter='hello; rm somefile'
$ ssh user@server "echo $myparameter"
hello
rm: cannot remove `somefile': No such file or directory

$ ssh user@server "echo $(printf '%q' "$myparameter")"
hello; rm somefile
7
janmoesen