2

是否有任何现有的库用于实现远程命令行界面?

例如

考虑 的情况 gitolite,当您执行 a 时git push origin,它会 ssh 进入远程服务器并执行一些代码(即hooks,整个事务不需要服务器。

我要存档的是类似的东西,例如

./remote get_up_time

它将调用 ssh 到远程机器并执行get_up_time已部署的脚本

4

3 回答 3

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 回答
1

实现自己的脚本会很容易。

#!/bin/bash

ssh root@example.com "$1"

然后你可以像这样打电话:

./remote.sh get_up_time
于 2012-08-11T03:28:51.063 回答
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密码或其他内容。

尽管看起来“没有服务器”,但sshd远程系统上肯定有一个(远程服务器)运行,允许它工作。

如果您不想使用ssh,则需要使用在远程机器上运行的另一台服务器或自己编写。

于 2012-08-12T17:37:30.327 回答