From: HACKATHORN, T. \(SWBT\) <th...@at...> - 2006-12-21 13:48:49
|
Austin, Thanks for the idea. I don't think screen will work for my needs based on the documentation I read about it. This system is meant to be non-interactive. A script runs and interacts with databases, and does automated screen scraping, to a 3270 terminal. Really no need for additional terminals, or a way for someone to interact with the script. Usually these scripts run many times a day, on systems that are not even logged in, I use the s3270 so it doesn't have to create a window at all. I have found that is faster that way. Dereferencing sounds like what I need to do, but I am not familiar with how to do that. Can you give any further information about the syntax of dereferencing a glob? Thanks, Todd Hackathorn Th...@at... -----Original Message----- From: Austin Schutz [mailto:te...@of...]=20 Sent: Wednesday, December 20, 2006 4:06 PM To: HACKATHORN, TODD (SWBT) Cc: exp...@li... Subject: Re: [Expectperl-discuss] Connection Manager using Expect On Wed, Dec 20, 2006 at 03:42:56PM -0600, HACKATHORN, TODD (SWBT) wrote: >=20 > I am trying to create a "connection manager" of sorts, it would keep 3 > live connections up logged in and ready to go at all times, then when my > client programs need a connection to our legacy 3270 systems, it would > be able to ask for an existing connection and start running with out the > overhead time of logging in. This sounds a lot like screen. If I were to try something like this, I would figure out how to do it manually using screen and then figure out how to interface expect with screen. > Sounds easy enough. Where I am stuck is > getting an Expect object to move from one process to another. I have > tried IPC::Sharable but it keeps giving me an error saying it can't use > a GLOB, I guess that is what a reference to the Expect object is. My > question is does anyone here know of a way I can convert this Expect > object to a reference that can be passed in this way? Or is there a way > I can export the connection as a normal file handle, and pass that > reference to the other process and init a new Expect object on a > existing connection(already logged in)? an Expect object is a glob reference. A glob is what perl uses to hold other data types, more or less. This is useful because there is no "filehandle" data type native to perl 5, so filehandles are accessed via their glob. Some things, such as print(), will automatically dereference the glob when you call them, such as 'print $expect "sending this to expect";'. Other processes don't expect a reference, so you need to dereference the glob before you pass it to the receiving sub, e.g.=20 my_print(*$expect, "print this using the dereferenced glob"); > I have though about making a client/server set up through TCP, the > server would open a connection, and do what ever is needed to keep it > alive, then the "worker processes" could send it simple request to put, > and get strings and what not. But that seems like a lot of overhead. I > already have a fair amount of overhead. I don't really want to go down > the road of writing my own 3270 emulator from scratch, the s3270 already > works well. >=20 Sounds like work. Again, I would use screen, then maybe have some aliased script which would access screen. You could have users do something like 'ssh terminalhost screenscript' for access. Or whatever makes sense. Austin |