Take the 2-minute tour ×
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free, no registration required.

I'm working on my CCNA and have 4 switches & 4 routers which make up my main lab. I bought two quad port USB to Serial (1 USB to 4 Serial) Adapters onto the ends of which I've attached 8 Serial crossover cables.

Those USBs are plugged into a P4 Ubuntu server and I can successfully ssh into that server and manage any of the devices using minicom, as myself as I'm in the dialout group.

I have a minicom save file for USB[0-7] and have used ln to link SW1-4, R1-4 so I can "minicom R1", etc.

With my dual monitors, I can have all 8 terminal sessions open - 4 on each screen.

Here's the main thing though: I have to open a terminal on my workstation, SSH across to the access server, then run minicom. I have to do this once for each device. Although that's not a back breaker, I'm sure there must be a simpler way to do it - can I tell my server to expose each serial connection as a telnet or ssh port? I would really like to be able to run a script of some sort that launched all eight sessions in one click.

share|improve this question

1 Answer 1

up vote 2 down vote accepted

Some time ago I was able to make this kind of serial to network redirection using remserial:

Give access to a RS232 device over a network.

The computer with the serial port connected to the device (such as a data aquisition device) runs the remserial program:

remserial -d -p 23000 -s "9600 raw" /dev/ttyS0 &

This starts the program in daemon mode so that it runs in the background, it waits for connections on port 23000 and sets up the serial port /dev/ttyS0 at 9600 baud. Network connections to port 23000 from any machine can then read and write to the device attached to the serial port.

This can be started from /etc/rc.local or as an entry in /etc/inittab or set up as a system service with a file in /etc/rc.init/.

This is what you need:

Server farm console control.

Assuming multiple Linux servers (such as web servers) are set up to have a serial port as their console instead of a monitor/keyboard, their serial ports could be connected to a control server using a multi-port serial board. On the control server, a copy of remserial is run for each server:

remserial -d -p 23000 -s "115200 raw" /dev/ttyS0
remserial -d -p 23001 -s "115200 raw" /dev/ttyS1
remserial -d -p 23002 -s "115200 raw" /dev/ttyS2
remserial -d -p 23003 -s "115200 raw" /dev/ttyS3

From any computer on the local network, use a telnet program to connect to the control server on the appropriate port:

telnet control-server-name 23002

This would connect through the associated serial port to the desired server's console. This example would then give the user console access to the 3rd server.

Careful scripting such as using the Linux "expect" program could allow batches of commands to be run on each server.

At the end of the page you'll find links to download a precompiled binary for i386 (32-bit) and the source code (if you're running a 64-bit OS or prefer to compile it yourself).

EDIT: To add a little automation you can install expect and write the following script:

#!/usr/bin/expect

spawn telnet 192.168.0.1
expect "Username:"
send "your-username\r"
expect "Password:"
send "your-password\r"
expect "#"            <----- prompt character ($ or #)
interact

This will automatically telnet to the host login and drop you to the prompt.

share|improve this answer
    
Fantastic! This looks like it will do the job perfectly. I can install password less telnet access, but resrict to internal hosts and I can handle double clicking 8 icons to launch the terminals. Thanks very very much - you've made me very happy! –  A J Rossington May 7 '13 at 20:59
    
@AJRossington Answer updated. –  Eric Carvalho May 7 '13 at 21:08
    
Nice! Thanks for your help. –  A J Rossington May 7 '13 at 21:17

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.