Ubuntu 14.04 にRuby 2.2をインストールし、SSHにより自動操作

まず、Rubyをインストールする
端末を開き、コマンドを実行する

sudo apt-get install software-properties-common

sudo apt-add-repository ppa:brightbox/ruby-ng
sudo apt-get update
sudo apt-get install ruby2.2

インストールを確認

ruby -v

ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-linux-gnu]
インストール完了を確認

参考

PPAパッケージを利用してRuby 2.2をUbuntu 14.04にインストールする


http://www.oiax.jp/rails/zakkan/apt-get-install-ruby2-1.html

作業用のフォルダ(work)を作成する

cd ~
mkdir work
cd work

SSH接続プログラム ssh01.rbを作成

参考

vi ssh01.rb

i(挿入)

#!/usr/bin/env ruby
# -*- encoding: UTF-8 -*-
require 'rubygems'
require 'net/ssh'
command="ls -la"
cmd_data=""
# Net::SSH.start('xxx.xxx.xxx.xxx', 'usrename', :password => 'password' ,:port => 22) do |ssh|
Net::SSH.start('xxx.xxx.xxx.xxx', 'usrename',:keys => ['//home/xxxx/key-2015-0x-xx-xx-xx.pem'],:port => 22) do |ssh|
 ssh.open_channel do |channel|
  channel.request_pty do |ch , success|
   raise "I can't get pty rquest" unless success
   ch.exec(command)
   ch.on_data do |ch , data|
    data = data.strip
    cmd_data << data if data.size > 0
    puts data
   end
  end
 end
end

ESC+:wqで、保存終了

実行してみる

ruby ssh01.rb

エラーになる

/usr/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in <code>require': cannot load such file -- net/ssh (LoadError)

net/ssh が、ないようだ

参考
http://morizyun.github.io/blog/net-ssh-net-scp-gem-ruby/
http://qiita.com/znz/items/5471e5826fde29fa9a80

gem で、bundlerをインストールする必要がある

gem -v

2.4.5.1
gemは、入っている

 bundler -v
コマンド 'bundler' は見つかりませんでした。もしかして:
 コマンド 'bundle' - パッケージ 'bundler' (universe)
bundler: コマンドが見つかりません

bundlerはないようだ。

gem install bundler

で bundler をインストール

Fetching: bundler-1.10.6.gem (100%)
ERROR:  While executing gem ... (Errno::EACCES)
    Permission denied @ dir_s_mkdir - /var/lib/gems

Permissionエラーなので、
sudoでないといけないようだ

sudo gem install bundler

実行すると

Fetching: bundler-1.10.6.gem (100%)
Successfully installed bundler-1.10.6
Parsing documentation for bundler-1.10.6
Installing ri documentation for bundler-1.10.6
Done installing documentation for bundler after 4 seconds
1 gem installed

となった、インストールできたようだ
一応、確認

bundler -v

Bundler version 1.10.6

インストール確認OK

Gimfileを作る

cd ~/work
bundle init
ls

Gemfile
が、できている
Gemfile
に、gem “net-ssh”を追加する

vi Gemfile

i(挿入)
gem “net-ssh”
を追加
ESC+:wqで保存終了

bundleを実行し、net-sshを読み込む

bundle

実行すると

bundle
Fetching gem metadata from https://rubygems.org/.......
Fetching version metadata from https://rubygems.org/..
Resolving dependencies...
Installing net-ssh 2.9.2
Using bundler 1.10.6
Bundle complete! 2 Gemfile dependencies, 3 gems now installed.
Use </code>bundle show [gemname]` to see where a bundled gem is installed.

インストールできたようだ

再度、実行してみる

cd ~/work
ruby ssh01.rb

sshで接続し、commdを実行できた
合計 44
dr-xr-x—. 4 root root 4096 5月 24 20:05 2015 .
dr-xr-xr-x. 24 root root 4096 5月 24 07:51 2015 ..
drwxr-xr-x. 3 root root 4096 5月 4 16:22 2015 .ansible
-rw——- 1 root root 2080 9月 24 21:42 2015 .bash_history
-rw-r–r–. 1 root root 18 5月 20 19:45 2009 .bash_logout
-rw-r–r–. 1 root root 176 5月 20 19:45 2009 .bash_profile
-rw-r–r–. 1 root root 176 9月 23 12:59 2004 .bashrc
-rw-r–r–. 1 root root 100 9月 23 12:59 2004 .cshrc
drwx—— 2 root root 4096 8月 30 12:27 2015 .ssh
-rw-r–r–. 1 root root 129 12月 4 06:42 2004 .tcshrc
-rw——- 1 root root 1293 5月 24 11:44 2015 .viminfo