This sounds like a great idea (but see below). As to your complication, I'd suggest taking a look at Net::Telnet's get() command. I don't know exactly how you plan for your system to work, but if there's a space in it where you think there might be unexpected output from system X, you could get() for a certain timeout in those places. If the problem is more generally present while your program is running, it might be a good idea to have a loop, get()ing output from system X with a timeout and then reading input from the logging system.
I'm always thinking about this stuff, and you probably have too, but I feel compelled to mention that anybody who can telnet to your passthrough program will have access to machine X as the user you're logging in with. Telnet isn't the most secure protocol anyway, but it's worth thinking about.
Overall, this sounds like a pretty cool solution to me.
--
Love justice; desire mercy.
| [reply] |
So, you need to simulate a telnet session? You send login and password, and detect a prompt for confirmation. You send string X, and expect response Y. You send string A, and expect response B, C, or D.
I'd suggest using Expect.pm. It's got a built in function for detecting the prompt, and it's really easy to fork through possible responses.
-Logan
"What do I want? I'm an American. I want more." | [reply] |
I had a similar idea... You create like a firewall type application, where for example you could do an ssh connection to this box from the web, and it will then do the telnet for you from there on. Of course this idea requires some programming, or you could just ssh into a Linux box over the web, and then telnet from there ;-)
One option would be to map a port (I think the command is redir on Linux), which will allow you to connect to a gateway box, which will then redirect you automatically to the other box.
| [reply] |