Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Python > any telnetlib equivalent in Python for rlogin?

Reply
Thread Tools

any telnetlib equivalent in Python for rlogin?

 
 
walala
Guest
Posts: n/a
 
      11-11-2003
Dear all,

I recently came across a Python program which used "telnetlib" to automate
things in the several unix machines in our local networks; I attached the
script as follows;

I wonder if it is possible to have the equivlent libary for "rlogin" in
Python? Because our local networks support only SSH or RLOGIN. This script
used Telnet so it could not be used in our local networks;

Considering I am quite new to Python, is there any way that I can easily
change this program to be used on "rlogin"? For example, is there a library
called "RLOGIN" that I can simply use self.tn = tn =
rloginlib.Rlogin(self.host), or something like that?

Thanks a lot,

-Walala

----------------------------------------------------------
import telnetlib
self.tn = tn = telnetlib.Telnet(self.host)
tn.read_until("login: ")
tn.write(self.username + "\n")
tn.read_until("Password: ")
tn.write(self.password + "\n")

# XXX: how to know whether login is successful?
tn.read_until(self.username)
#


 
Reply With Quote
 
 
 
 
Martin Franklin
Guest
Posts: n/a
 
      11-11-2003
On Tue, 2003-11-11 at 04:22, walala wrote:
> Dear all,
>
> I recently came across a Python program which used "telnetlib" to automate
> things in the several unix machines in our local networks; I attached the
> script as follows;
>
> I wonder if it is possible to have the equivlent libary for "rlogin" in
> Python? Because our local networks support only SSH or RLOGIN. This script
> used Telnet so it could not be used in our local networks;
>
> Considering I am quite new to Python, is there any way that I can easily
> change this program to be used on "rlogin"? For example, is there a library
> called "RLOGIN" that I can simply use self.tn = tn =
> rloginlib.Rlogin(self.host), or something like that?
>
> Thanks a lot,
>
> -Walala
>



Walala,

There is no standard ssh or rlogin module in the python standard library
I guess twisted has both (a quick google for twisted python could tell
you).

You don't mention what platform you are running on but if it's a *nix
then you could use pexpect (again google will tell you where to find
pexpect) to 'simulate' ssh like so:-


import pexpect
import sys
import re
import os

PROMPT = "\$|\%|\>"


class SSH:
def __init__(self, user, password, host):
self.child = pexpect.spawn("ssh %s@%s"%(user, host))
i = self.child.expect(['assword:', r"yes/no"], timeout=120)
if i==0:
self.child.sendline(password)
elif i==1:
self.child.sendline("yes")
self.child.expect("assword:", timeout=120)
self.child.sendline(password)
self.child.expect(PROMPT)


def command(self, command):
"""send a command and return the response"""
self.child.sendline(command)
self.child.expect(PROMPT)
response = self.child.before
return response

def close(self):
"""close the connection"""
self.child.close()


if __name__=="__main__":
import getpass
password = getpass.getpass("Password: ")
ssh = SSH("RemoteUsername", password, "RemoteHost")
print ssh.command("pwd")



Cheers
Martin

--
Martin Franklin <(E-Mail Removed)>


 
Reply With Quote
 
 
 
 
Francis Avila
Guest
Posts: n/a
 
      11-12-2003
"walala" <(E-Mail Removed)> wrote in message
news:bopo66$rev$(E-Mail Removed)...
> Dear all,
> Considering I am quite new to Python, is there any way that I can easily
> change this program to be used on "rlogin"? For example, is there a

library
> called "RLOGIN" that I can simply use self.tn = tn =
> rloginlib.Rlogin(self.host), or something like that?


Yes: replicate the public interface of telnetlib, and use the rlogin
protocol instead of the telnet protocol behind-the-curtain. Much of the
telnetlib public interface will be redundant, because these protocols don't
have many escape or control characters, and hence do very little data
cooking.

As for the behind-the-covers implementation, you can either go expect-like
and communicate with an rlogin/ssh subshell through os.popen2/3, or
reimplement an rlogin/ssh client in Python. Reimplementing the rlogin
client looks pretty easy--its a simple protocol (rfc1282). Reimplementing
ssh is _far_ more ambitious--I think communicating with a subshell is
probably a better idea for that.

It seems odd to me that your network supports rlogin but not telnet--rlogin
is iirc far more insecure because of the .rhosts nonsense. I think ssh is
certainly a better choice here, even though using it will be messier.
--
Francis Avila

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
telnetlib in python-3.0 rowland@river2sea.org Python 1 04-30-2009 06:10 AM
501 PIX "deny any any" "allow any any" Any Anybody? Networking Student Cisco 4 11-16-2006 10:40 PM
RE: Sending Through ^] Through telnetlib Mahrt, Dallas Python 0 01-23-2004 07:04 PM
Sending Through ^] Through telnetlib John Abel Python 2 01-23-2004 05:47 PM
quest about telnetlib =?gb2312?B?1cXWvsP3?= Python 1 11-13-2003 11:28 PM



Advertisments