2

リモート コマンド ライン インターフェイスを実装するための既存のライブラリはありますか?

例えば

の場合を考えてみましょう。 gitolitegit push origin実行すると、リモート サーバーに SSH で接続され、何らかのコードが実行されます (つまりhooks、トランザクション全体にサーバーは必要ありません。

私がアーカイブしたいのはそのようなものです、例えば

./remote get_up_time

リモート マシンで ssh を呼び出し、get_up_timeすでにデプロイされているスクリプトを実行します。

4

3 に答える 3

1

独自のスクリプトを実装するのは簡単です。

#!/bin/bash

ssh root@example.com "$1"

次に、次のように呼び出すことができます。

./remote.sh get_up_time
于 2012-08-11T03:28:51.063 に答える
1

ruby 標準ディストリビューションは、DRb aka Distributed Ruby を提供します。

http://www.ruby-doc.org/stdlib-1.9.3/libdoc/drb/rdoc/DRb.html

于 2012-08-10T20:37:30.530 に答える
0

それがインストールされていて、公開鍵がリモートサーバー上にあると仮定するとssh(したがって、パスワードを提供する必要はありません)、これは大まかな実装になります。

#!/usr/bin/env ruby

host = ARGV.shift
command = ARGV.join(' ')
IO.popen("ssh #{host} \"#{command}\"") do |io|
  io.sync = true
  io.readlines.each { |line| puts line }
end

次のように使用できます:

$ ./remote.rb www.example.com ls -l

必要に応じてこれを拡張してssh、パスワードなどを提供するためにstdinから読み取るなどの追加機能を提供できます。

「サーバーがない」ように見えますが、sshdこれを機能させるリモートシステム上で(リモートサーバー)が実行されていることは確かです。

を使用したくない場合はssh、リモートマシンで実行されている別のサーバーを使用するか、独自のサーバーを作成する必要があります。

于 2012-08-12T17:37:30.327 に答える