On Mar 24, 12:57 am, "Rob Wolfe" <[EMAIL PROTECTED]> 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? -- http://mail.python.org/mailman/listinfo/python-list