0

リモートコンピューターで(bashシェルで)いくつかのRubyスクリプトを実行したいと思っていました

の一連の bash コマンドを作成できましたruby -e "<command>"が、これらのスクリプトの一部は 100 行を超えています。

ruby -eHEREDOC または%{}&eval()を使用すると、一重引用符と二重引用符が混在するとうまく機能しません。

これを試みるより良い方法はありますか?

編集:

使用されているプロトコルは、リモート シェルの範囲内でこれらのコマンドを実行する Apple Remote Desktop です。

4

4 に答える 4

4

私の理解が正しければ、SSH または同様のプロトコルを介してリモート マシンでローカルの ruby​​ スクリプトを実行したいと考えていると思います。スクリプトが非対話型 (つまり、ユーザー入力を必要としない) の場合は、ローカルでスクリプトを作成し、stdin.

つまり、最初にスクリプトを作成し、ローカルに保存します。たとえば、foo.rb. それで:

ssh remotehost ruby < foo.rb

SSH セッションを開始し、リモート Ruby インタープリターを実行します。引数がない場合、Ruby インタープリターは標準入力からコマンドを実行するため、stdin でプログラムを SSH にフィードします。

于 2012-08-29T18:16:01.363 に答える
1

これはうまくいきました:

cat << 'EOF' > /tmp/myscript.rb

# ruby script contents go here. any syntax is valid, except for your limit string (EOF)

EOF

ruby /tmp/myscript.rb;
rm /tmp/myscript.rb;

これはインタプリタ バイナリが標準入力スタイルのコマンドを処理する方法に依存していないため、他のほとんどの言語 (python、perl、php) でも機能します。

于 2012-09-14T18:33:33.980 に答える
1

また、ARD (ctrl-D を埋め込むことはできないと思います) を介して ruby​​ スクリプトを実行したいので、(彼自身の問題に対する) joraff のソリューションを Kelvin のソリューションと組み合わせることができると最初に考えまし

cat << ENDOFSCRIPT | ruby

#Here be code ...

ENDOFSCRIPT

ファイルの作成/削除を保存します。

しかし、もっと良い方法があります:

ARD が EOF を埋め込むか、そうでない場合は、簡単に実行できる方法で送信内容を終了することがわかります。

ruby

#Paste whole script here

少なくとも ARD 3.6.1 で動作します。勝つ!

于 2013-01-20T23:58:36.510 に答える
0

最初にスクリプトを送信してみませんか?

scp foo.rb remotehost:
ssh remotehost "ruby foo.rb"

次の後にファイルをクリーンアップすることもできます。

ssh remotehost "rm foo.rb"
于 2012-08-29T19:07:40.473 に答える