[Tutor] why "ifconfig" is alway running?

lei yang yanglei.fage at gmail.com
Sun Dec 19 12:47:56 CET 2010


#!/usr/bin/env python
import datetime
import subprocess
import sys
import os
import signal
from time import sleep

def host_run(cmd, secs=10):
    print("running %s" % cmd)
    timeout = datetime.timedelta(seconds=secs)
    proc = subprocess.Popen(cmd, stdout=subprocess.PIPE,
stderr=subprocess.STDOUT, shell=True)
    start = datetime.datetime.now()
    while ( proc.poll() is None and (datetime.datetime.now() - start)
< timeout): #not timed out
        print proc.stdout.readline() #TODO timestamp?
        print "hello,i'm here"
        sleep(1)
    if 0 == proc.poll():
        print("'%s' is program exited" %cmd)
    else:
        try:
            os.kill(proc.pid, signal.SIGINT)
	    print "Process timeout: '%s'" % cmd
        except OSError:
            pass
#cmd="ping 128.114.122.2"
cmd="ssh root at 10.0.0.1"
host_run(cmd,10)

if cmd="ssh root at 10.0.0.1"
it never print "hello i'm here" , how can i handle this issue, and I
find my script cant process the "timeout" to kill it.
if cmd="ping 128.114.122.2", no this issue.

Lei

On Sun, Dec 19, 2010 at 4:57 PM, Alan Gauld <alan.gauld at btinternet.com> wrote:
>
> "lei yang" <yanglei.fage at gmail.com> wrote
>
>
> def runForAWhile(cmd, secs=10):
>   print("running %s" % cmd)
>   timeout = datetime.timedelta(seconds=secs)
>   print timeout
>   proc = subprocess.Popen(cmd, stdout=subprocess.PIPE,
> stderr=subprocess.STDOUT, shell=True)
>   status = proc.poll()
>
> You are still only checking status once outside the while loop.
>
>   start = datetime.datetime.now()
>   while (status is None and (datetime.datetime.now() - start) <
> timeout): #not timed out
>       print proc.stdout.readline() #TODO timestamp?
>       #print status
>       #print datetime.datetime.now() - start
>
>
>> I see that "status" always "!=0“  why  program  is NOT exited
>
>
> --
> Alan Gauld
> Author of the Learn to Program web site
> http://www.alan-g.me.uk/
>
>
> _______________________________________________
> Tutor maillist  -  Tutor at python.org
> To unsubscribe or change subscription options:
> http://mail.python.org/mailman/listinfo/tutor
>


More information about the Tutor mailing list