是否有用于实现远程命令行界面的现有库?
e.g。
考虑gitolite
的情况,当你执行git push origin
时,它会进入远程服务器并执行一些代码(即hooks
,整个事务不需要服务器
我要存档的内容就是这样,例如
./remote get_up_time
它将调用ssh到远程机器并执行已部署的脚本get_up_time
答案 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
,则需要使用远程计算机上运行的其他服务器或编写自己的服务器。