网络服务相关操作的 Ruby 实现
1. 成为 SSH 客户端
在进行安全的数据或命令传输时,我们常常需要在本地计算机和拥有 shell 账户的远程计算机之间建立安全连接。为了实现这一需求,我们可以使用 Ruby 中的 Net::SSH
模块,它实现了 SSH2 协议。该模块位于 net-ssh
宝石包中,不过部分操作系统会自行打包该模块。
要启动一个 SSH 会话,我们可以向 Net::SSH::start
方法传入主机名、主机上的 shell 用户名和密码。如果已经在本地计算机和远程主机之间设置了 SSH 公钥/私钥对,那么可以省略用户名和密码:
require 'rubygems'
require 'net/ssh'
Net::SSH.start('example.com', :username=>'leonardr',
:password=>'mypass') do |session|
# 在这里操作 Net::SSH::Session 对象...
end
Net::SSH::start
方法会接收一个代码块,并向该代码块传入一个 Net::SSH::Session
对象。我们可以使用这个会话对象在两台机器之间发送加密数据,或者在远程机器上启动进程。当代码块执行结束时,SSH 会话会自动终止。
在过去,直到 20 世纪 90 年代末,人们经常使用像