是否有任何现有的库用于实现远程命令行界面?
例如
考虑 的情况 gitolite
,当您执行 a 时git push origin
,它会 ssh 进入远程服务器并执行一些代码(即hooks
,整个事务不需要服务器。
我要存档的是类似的东西,例如
./remote get_up_time
它将调用 ssh 到远程机器并执行get_up_time
已部署的脚本
ruby 标准发行版提供 DRb aka Distributed Ruby:
http://www.ruby-doc.org/stdlib-1.9.3/libdoc/drb/rdoc/DRb.html
实现自己的脚本会很容易。
#!/bin/bash
ssh root@example.com "$1"
然后你可以像这样打电话:
./remote.sh get_up_time
假设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
,则需要使用在远程机器上运行的另一台服务器或自己编写。