使用Ruby / Python实现远程命令行界面

时间:2012-08-10 16:14:11

标签: python ruby linux gitolite

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

e.g。

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

我要存档的内容就是这样,例如

./remote get_up_time

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

3 个答案:

答案 0 :(得分:1)

ruby​​标准发行版提供了DRb又名分布式Ruby:

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

答案 1 :(得分:1)

实现自己的脚本非常简单。

#!/bin/bash

ssh root@example.com "$1"

然后你可以这样打电话:

./remote.sh get_up_time

答案 2 :(得分: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

您可以根据需要展开它以提供额外的功能,例如从stdin读取以提供ssh密码等。

虽然看起来有“没有服务器”,但是远程系统上肯定有一个sshd(远程服务器)可以运行它。

如果您不想使用ssh,则需要使用远程计算机上运行的其他服务器或编写自己的服务器。