Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 用于检查主机是否处于活动状态的脚本_Python_Network Programming_While Loop - Fatal编程技术网

Python 用于检查主机是否处于活动状态的脚本

Python 用于检查主机是否处于活动状态的脚本,python,network-programming,while-loop,Python,Network Programming,While Loop,我不久前写了这个剧本。脚本部分首先检查主机名(如sys.argv[1])是否在列表中(k)。然后向主机发送回显请求(即,ping),并在接下来的80秒内继续发送。如果没有回应。在此期间之后,它会宣布主机关闭 k = ['mserv', 'vserv', 'cpde', 'cpdg'] for j in k: if sys.argv[1] not in k: print "Host [%s] doesn't exist!!\n" % sys.argv[1]

我不久前写了这个剧本。脚本部分首先检查主机名(如
sys.argv[1]
)是否在列表中(
k
)。然后向主机发送回显请求(即,
ping
),并在接下来的80秒内继续发送。如果没有回应。在此期间之后,它会宣布主机关闭

k = ['mserv', 'vserv', 'cpde', 'cpdg']

for j in k:
    if sys.argv[1] not in k:
        print "Host [%s] doesn't exist!!\n" % sys.argv[1]
        sys.exit(1)

    if sys.argv[1] == j:
        (cS,cO) = commands.getstatusoutput('ping -c1 -t1 %s' % j)
        i = 0
        m = "Waiting for %s to wake up..... " % j

        while True:
            if cS == 0:
                print "Host: %s is up and running........\n" % j
                break
            else:
                (cS,cO) = commands.getstatusoutput('ping -c1 -t1 %s' % j)
                sys.stdout.write('\r%s\b%d' % (m,i))
                sys.stdout.flush()
                sys.stdout.write('\r \b')
                i += 1

            if i == 80:
                print "The host: %s is not running yet, try again!!\n" % j
                sys.exit(0)
sys.exit(0)

这很有效,但是我有没有办法改进脚本/逻辑并缩短它?提前感谢您的建议。干杯

这可能是回答类似问题的更好地方。@egor83:谢谢!我不知道。很有趣,但是。。。不工作:回溯(最后一次调用):如果sys.argv[1]不在k中,则第4行的文件“alive.py”不在k中:name错误:在向脚本添加“import sys import commands”使其仍然工作后,未定义名称“sys”。。。不。有关于如何配置它的提示吗?什么是“k”?@Pitto:只有脚本的那部分根本不起作用。我将在这里为您复制并粘贴整个脚本。干杯