Python отправить cmd на сокет
У меня есть простой вопрос о Python:
У меня есть другой скрипт Python, прослушивающий порт на машине с Linux. Я сделал это, чтобы я мог отправить ему запрос, и он сообщит другой системе, что она жива и слушает.
Моя проблема в том, что я не знаю, как отправить этот запрос из другого скрипта Python, работающего на той же машине (румянец)
У меня есть скрипт, работающий каждую минуту, и я хотел бы расширить его, чтобы также отправить этот запрос. Я не ожидаю получить ответ, мой скрипт прослушивания отправляет в базу данных.
В Internet Explorer я пишу так: http://192.168.1.46:8193/?Ping Я хотел бы знать, как сделать это из Python, и желательно просто отправлять и не зависать, если другой скрипт не запущен.
спасибо Майкл
4 ответа
Похоже, вы делаете HTTP-запрос, а не пинг ICMP.
urllib2, встроенный в Python, может помочь вам в этом.
Вам нужно будет переопределить тайм-аут, чтобы не висеть слишком долго. Прямо из этой статьи, приведенной выше, приведен пример кода, который вы можете настроить с желаемым временем ожидания и URL-адресом.
import socket
import urllib2
# timeout in seconds
timeout = 10
socket.setdefaulttimeout(timeout)
# this call to urllib2.urlopen now uses the default timeout
# we have set in the socket module
req = urllib2.Request('http://www.voidspace.org.uk')
response = urllib2.urlopen(req)
import urllib2
try:
response = urllib2.urlopen('http://192.168.1.46:8193/?Ping', timeout=2)
print 'response headers: "%s"' % response.info()
except IOError, e:
if hasattr(e, 'code'): # HTTPError
print 'http error code: ', e.code
elif hasattr(e, 'reason'): # URLError
print "can't connect, reason: ", e.reason
else:
raise # don't know what it is
Это немного за пределами моих знаний, но, может быть, этот вопрос может помочь?