2014-09-15 6 views

ответ

5

Вы можете использовать модуль подпроцесс и shlex модуль для разбора команды оболочки, как ниже

import shlex 
import subprocess 

# Tokenize the shell command 
# cmd will contain ["ping","-c1","google.com"]  
cmd=shlex.split("ping -c1 google.com") 
try: 
    output = subprocess.check_output(cmd) 
except subprocess.CalledProcessError,e: 
    #Will print the command failed with its exit status 
    print "The IP {0} is NotReacahble".format(cmd[-1]) 
else: 
    print "The IP {0} is Reachable".format(cmd[-1]) 
+0

Можете ли вы рассказать «shlex» в этом контексте? Кроме того, можно ли это сделать без использования «shlex»? – Goblin

+0

@Goblin. Shlex.split() может быть полезна при определении правильной токенизации для args (для оболочки unix). Да, это можно сделать без shlex, тогда вам нужно будет сделать токенизацию вашей команды, например cmd = ["ping", " -c1 "," google.com "] и перейдите к subprocess.check_ouptut, эта работа выполняется с помощью shlex.split() для вас. для ссылки shlex прочитайте эту ссылку https://docs.python.org/2/library/shlex.html – Ram

+0

Получил это. Благодаря тонну! – Goblin

6

Вы можете попробовать:

>>> import os 
>>> if os.system("ping -c 1 google.com") == 0: 
...  print "host appears to be up" 
+0

Обратите внимание, что это не кросс-платформенным. – ikrase