Create new processes over telnet in XP
Godzilla
godzillaismad at gmail.com
Fri Mar 23 20:47:11 EDT 2007
On Mar 24, 12:57 am, "Rob Wolfe" <r... at smsnet.pl> wrote:
> Godzilla wrote:
> > Hello,
>
> > How do you create/spawn new processes in XP over telnet using python?
> > I.e. I would like to create a new process and have it running in the
> > background... when I terminate the telnet connection, I would what the
> > spawned processes to keep running until I shut it off...
>
> > I got the os.popen method to spawn a new process running in the
> > backgroun, but not over telnet... tried os.popen[2, 3, 4] and also
> > subprocesses.popen without any luck...
>
> I don't know what kind of OS there is on that remote host you telnet
> to.
> The idea boils down to appropriate using of methods
> `read_until` and `write` from class `telnetlib.Telnet`.
>
> For more complicated stuff you can consider using pyexpect.
>
> Here is a small example of connecting to HP-UX.
> You can adjust that to your needs.
>
> <code>
> import telnetlib, time
>
> def login(tn, login, passwd, prompt):
> tn.read_until("login: ")
> tn.write(login + "\n")
> if passwd:
> tn.read_until("Password: ")
> tn.write(passwd + "\n")
> tn.read_until(prompt)
> time.sleep(2)
> print "logged in"
>
> def run_proc(tn, progname):
> tn.write("nohup %s &\n" % progname)
> tn.write("exit\n")
> print "program <%s> running" % progname
>
> def kill_proc(tn, login, prompt, progname):
> tn.write("ps -u %s\n" % login)
> buf = tn.read_until(prompt)
> pid = get_pid(buf, progname)
> if not pid:
> print "program <%s> not killed" % progname
> tn.write("exit\n")
> return
> tn.write("kill -TERM %s\n" % pid)
> tn.write("exit\n")
> print "program <%s> killed" % progname
>
> def get_pid(buf, progname):
> pid, comm = None, None
> for line in buf.split("\n"):
> try:
> pid, _, _, comm = line.split()
> except ValueError:
> continue
> if comm == progname:
> return pid
>
> tn = telnetlib.Telnet(HOST, PORT)
> #tn.set_debuglevel(1)
> login(tn, "login", "passwd", "/home/user")
> run_proc(tn, "python ~/test.py")
> #kill_proc(tn, "login", "/home/user", "python")
> </code>
>
> --
> HTH,
> Rob
Rob, I would be logging into another XP machine to do some software
installation... the code you provided, correct me if I'm wrong, seems
to work under Unix/Linux. Any idea how to do the equivalent in XP?
More information about the Python-list
mailing list