2010-06-14 1 views
2
$whois abc.com 

Я хочу использовать python, чтобы нажать эту команду, а затем дать результат как строку текста. Как я могу это сделать?Как использовать python, чтобы нажать эту команду и вернуть результат?

+1

Duplicate: http://stackoverflow.com/questions/89228/how-to-call-external-command-in-python –

+1

Не совсем дубликат, так как вопрос, который вы упомянули, является GENERIC, в то время как этот довольно специфический и есть лучшие способы сделать whois, чем вызвать внешнюю команду. – bortzmeyer

ответ

4

Вы можете использовать subprocess, например:

from subprocess import Popen, PIPE 
output = Popen(["/usr/bin/whois", "abc.com"], stdout = PIPE).communicate()[0] 

В stdout = PIPE силы параметров стандартный вывод должны быть записаны во временную трубу вместо консоли (если вы не хотите этого, удалите параметр stdout).

+0

Когда я говорю «print output», он возвращает None? – TIMEX

+0

Этого не должно быть. Что выводит whois при выполнении команды в оболочке? – AndiDog

+0

О, с документацией вам действительно нужен параметр 'stdout = PIPE', чтобы получить результат, отличный от' None'. – AndiDog

1

subprocess в порядке. С другой стороны, протокол whois равен so simple, что я не понимаю, зачем использовать внешнюю команду (и зависит от ее доступности). Просто откройте TCP-соединение с портом 43, отправьте однострочный запрос и прочитайте ответы.

+0

большинство других серверов whois или api там возвращают мусор для IP-адресов, но Linux whois является единственным, кто каким-то образом преследует ip до тех пор, пока не получит фактический whois от конечного узла. Я не уверен, что я ясно заявляю, просто хотел объяснить проблему авторов, поскольку я тоже сталкиваюсь с этим. – Max

Смежные вопросы