train-serial - Train Plugin for connecting to serial interfaces
This plugin allows applications that rely on Train to communicate with devices connected over serial interfaces. This could be the console port of network gear or embedded systems.
Installation
You will have to build this gem yourself to install it as it is not yet on Rubygems.Org. For this there is a rake task which makes this a one-liner:
rake install:local
Transport parameters
Option | Explanation | Default |
---|---|---|
device |
Device to connect to | /dev/ttyUSB0 |
baud |
Baud rate | 9600 |
data_bits |
Data Bits for connection | 8 |
parity |
Parity (:none, :even, :odd) | :none |
stop_bits |
Stop Bits for connection | 1 |
buffer_size |
Number of bytes per read | 1024 |
buffer_wait |
Wait between reads | 250 |
buffer_retries |
Retries until stopping reads | 3 |
setup |
Commands to issue on open | |
teardown |
Commands to issue on close | |
raw_output |
Suppress stdout processing | false |
error_pattern |
Regex to match error lines | ERROR.* |
prompt_pattern |
Regex to match device prompt | `[-a-zA-Z0-9]+(?:((?:config\ |
Example use
This will work for some Cisco devices on /dev/ttyUSB0:
require 'train'
train = Train.create('serial', {
device: '/dev/ttyUSB0',
setup: %Q[
enable
#{ENV['ENABLE_PASSWORD']}
terminal pager 0
],
teardown: "disable",
logger: Logger.new($stdout, level: :info)
})
conn = train.connection
result = conn.run_command("show version\n")
conn.close
Useful Setup/Teardown Patterns
Device | Setup | Teardown |
---|---|---|
Cisco Catalyst | enable\nterminal length 0\n |
disable |
Cisco ASA | enable\n#{ENV['ENABLE_PASSWORD']}\nterminal pager 0\n |
disable |