unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
* telnet in buffer using elisp -- is this the best way?
@ 2004-07-10 18:44 Tennis Smith
  2004-07-10 21:51 ` Kai Grossjohann
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Tennis Smith @ 2004-07-10 18:44 UTC (permalink / raw)


Hi

Apologies for the basic nature of the questions, but my area is s/w testing,
not elisp writing. ;-)

I frequently have the need to telnet into routers, via console ports thru a
term server or a native ip address.  I've built some *very* basic elisp
functions for doing this, but I'm wondering if there is a better way. The
number of routers in my environment continues to grow (Im in a testing
group, we have hundreds of the things). So, this approach has become a real
problem since each router requires a separate function to access it.

Here are a couple examples:

(defun 5gw-con ()
(interactive)
(telnet "10.10.10.58 2008")
(rename-buffer "ef-gw-5-con"))

(defun 5gw-con2 ()
(interactive)
(telnet "10.10.10.58 2009")
(rename-buffer "ef-gw-5-con"))

(defun 7gw ()
(interactive)
(telnet "10.10.10.40")
(rename-buffer "ef-gw-7"))

There's an additional issue too. Sometimes the same address will be used in
multiple places. Note that the first two examples uses an ip/port
combination. In this case the port will be changing, but the base ip address
will stay the same. Is there a way to specify the ip address in _one_ place
and have it be used in multiple places?

Is there a better way to do all this?

TIA,
-Tennis




--
Remove "-remove-to-reply" to respond to my  email address directly.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: telnet in buffer using elisp -- is this the best way?
  2004-07-10 18:44 telnet in buffer using elisp -- is this the best way? Tennis Smith
@ 2004-07-10 21:51 ` Kai Grossjohann
  2004-07-10 22:24 ` Kin Cho
  2004-07-13  7:59 ` Tim X
  2 siblings, 0 replies; 6+ messages in thread
From: Kai Grossjohann @ 2004-07-10 21:51 UTC (permalink / raw)


"Tennis Smith" <tennis_smith@yahoo-remove-to-reply.com> writes:

> There's an additional issue too. Sometimes the same address will be used in
> multiple places. Note that the first two examples uses an ip/port
> combination. In this case the port will be changing, but the base ip address
> will stay the same. Is there a way to specify the ip address in _one_ place
> and have it be used in multiple places?
>
> Is there a better way to do all this?

Perhaps this approach works: you define an alist which you then use
for completion.  The keys of the alist are names, the values are
strings to pass to telnet.

(defvar tennis-routers
        '(("one" "10.10.10.1" 42)))

(defun tennis-telnet (router)
  (interactive
    (list (completing-read "Router: " tennis-routers)))
  ;; At this point, router is a string.  We make it the complete
  ;; entry in tennis-routers.
  (setq router (assoc router tennis-routers))
  (telnet (nth 1 router) (nth 2 router))
  (rename-buffer (nth 0 router)))

I haven't tested it.

Kai

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: telnet in buffer using elisp -- is this the best way?
  2004-07-10 18:44 telnet in buffer using elisp -- is this the best way? Tennis Smith
  2004-07-10 21:51 ` Kai Grossjohann
@ 2004-07-10 22:24 ` Kin Cho
  2004-07-11  1:34   ` Tennis Smith
  2004-07-13  7:59 ` Tim X
  2 siblings, 1 reply; 6+ messages in thread
From: Kin Cho @ 2004-07-10 22:24 UTC (permalink / raw)


"Tennis Smith" <tennis_smith@yahoo-remove-to-reply.com> writes:

> Hi
> 
> Apologies for the basic nature of the questions, but my area is s/w testing,
> not elisp writing. ;-)

I doubt anybody's area is elisp writing -- except for the
full-time emacs people at gnu.

> I frequently have the need to telnet into routers, via console ports thru a
> term server or a native ip address.  I've built some *very* basic elisp
> functions for doing this, but I'm wondering if there is a better way. The
> number of routers in my environment continues to grow (Im in a testing
> group, we have hundreds of the things). So, this approach has become a real
> problem since each router requires a separate function to access it.
> 
> Here are a couple examples:
> 
> (defun 5gw-con ()
> (interactive)
> (telnet "10.10.10.58 2008")
> (rename-buffer "ef-gw-5-con"))
> 
> (defun 5gw-con2 ()
> (interactive)
> (telnet "10.10.10.58 2009")
> (rename-buffer "ef-gw-5-con"))
> 
> (defun 7gw ()
> (interactive)
> (telnet "10.10.10.40")
> (rename-buffer "ef-gw-7"))

The code below creates these functions based on a table:

(mapc
 (lambda (x)
   (fset (car x) 
	 (list 'lambda () (nth 1 x) '(interactive)
	       (nth 1 x) `(telnet ,(nth 1 x)) `(rename-buffer ,(nth 2 x)))))
 '((5gw-con "10.10.10.58 2008" "ef-gw-5-con")
   (5gw-con2 "10.10.10.58 2009" "ef-gw-5-con2")
   (7gw "10.10.10.40" "ef-gw-7")))

You should M-: (info " (elisp) Top") if you want to find out how
the above works.

-kin

> 
> There's an additional issue too. Sometimes the same address will be used in
> multiple places. Note that the first two examples uses an ip/port
> combination. In this case the port will be changing, but the base ip address
> will stay the same. Is there a way to specify the ip address in _one_ place
> and have it be used in multiple places?
> 
> Is there a better way to do all this?
> 
> TIA,
> -Tennis
> 
> 
> 
> 
> --
> Remove "-remove-to-reply" to respond to my  email address directly.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: telnet in buffer using elisp -- is this the best way?
  2004-07-10 22:24 ` Kin Cho
@ 2004-07-11  1:34   ` Tennis Smith
  2004-07-11  8:25     ` Kai Grossjohann
  0 siblings, 1 reply; 6+ messages in thread
From: Tennis Smith @ 2004-07-11  1:34 UTC (permalink / raw)


Hi Kin,

Thanks for the response. I like the approach. Couple additional questions
below.

-Tennis

<snip>
>
> (mapc
>  (lambda (x)
>    (fset (car x)
> (list 'lambda () (nth 1 x) '(interactive)
>        (nth 1 x) `(telnet ,(nth 1 x)) `(rename-buffer ,(nth 2 x)))))
>  '((5gw-con "10.10.10.58 2008" "ef-gw-5-con")
>    (5gw-con2 "10.10.10.58 2009" "ef-gw-5-con2")
>    (7gw "10.10.10.40" "ef-gw-7")))

How can I stuff the 10.10.10.58 addr in to variable so I only have to change
it in one place?
>
> You should M-: (info " (elisp) Top") if you want to find out how
> the above works.

Hmmm... I got "no match" on my machine for this. I typed:

alt-x
followed by:

: (info " (elisp) Top")

Maybe I'm misunderstanding what you're saying....
>
> -kin
>
<snip>

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: telnet in buffer using elisp -- is this the best way?
  2004-07-11  1:34   ` Tennis Smith
@ 2004-07-11  8:25     ` Kai Grossjohann
  0 siblings, 0 replies; 6+ messages in thread
From: Kai Grossjohann @ 2004-07-11  8:25 UTC (permalink / raw)


"Tennis Smith" <tennis_smith@yahoo-remove-to-reply.com> writes:

>> You should M-: (info " (elisp) Top") if you want to find out how
>> the above works.
>
> Hmmm... I got "no match" on my machine for this. I typed:
>
> alt-x
> followed by:

M-: and M-x are two different keys.

Kai

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: telnet in buffer using elisp -- is this the best way?
  2004-07-10 18:44 telnet in buffer using elisp -- is this the best way? Tennis Smith
  2004-07-10 21:51 ` Kai Grossjohann
  2004-07-10 22:24 ` Kin Cho
@ 2004-07-13  7:59 ` Tim X
  2 siblings, 0 replies; 6+ messages in thread
From: Tim X @ 2004-07-13  7:59 UTC (permalink / raw)


>>>>> "Tennis" == Tennis Smith <tennis_smith@yahoo-remove-to-reply.com> writes:

 Tennis> Hi Apologies for the basic nature of the questions, but my
 Tennis> area is s/w testing, not elisp writing. ;-)

 Tennis> I frequently have the need to telnet into routers, via
 Tennis> console ports thru a term server or a native ip address.
 Tennis> I've built some *very* basic elisp functions for doing this,
 Tennis> but I'm wondering if there is a better way. The number of
 Tennis> routers in my environment continues to grow (Im in a testing
 Tennis> group, we have hundreds of the things). So, this approach has
 Tennis> become a real problem since each router requires a separate
 Tennis> function to access it.

 Tennis> Here are a couple examples:

 Tennis> (defun 5gw-con () (interactive) (telnet "10.10.10.58 2008")
 Tennis> (rename-buffer "ef-gw-5-con"))

 Tennis> (defun 5gw-con2 () (interactive) (telnet "10.10.10.58 2009")
 Tennis> (rename-buffer "ef-gw-5-con"))

 Tennis> (defun 7gw () (interactive) (telnet "10.10.10.40")
 Tennis> (rename-buffer "ef-gw-7"))

 Tennis> There's an additional issue too. Sometimes the same address
 Tennis> will be used in multiple places. Note that the first two
 Tennis> examples uses an ip/port combination. In this case the port
 Tennis> will be changing, but the base ip address will stay the
 Tennis> same. Is there a way to specify the ip address in _one_ place
 Tennis> and have it be used in multiple places?

 Tennis> Is there a better way to do all this?

Well, just off the top of my head -

I would maintain a text file something like
router_name ip:port

Then I'd generalize my function so that it takes a single argument -
the router name and have the function obtain the ip address (possibly
with port spec) from the lookup file. You have only one function and a
lookup file to maintain.

tim





 Tennis> -- Remove "-remove-to-reply" to respond to my email address
 Tennis> directly.



-- 
Tim Cross
The e-mail address on this message is FALSE (obviously!). My real e-mail is
to a company in Australia called rapttech and my login is tcross - if you 
really need to send mail, you should be able to work it out!

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2004-07-13  7:59 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-07-10 18:44 telnet in buffer using elisp -- is this the best way? Tennis Smith
2004-07-10 21:51 ` Kai Grossjohann
2004-07-10 22:24 ` Kin Cho
2004-07-11  1:34   ` Tennis Smith
2004-07-11  8:25     ` Kai Grossjohann
2004-07-13  7:59 ` Tim X

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).