Форум сайта python.su
0
Здравствуйте! есть такой скрипт
import socket import re import sys def check_webserver(address, port, resource): if not resource.startswith('/'): resource = '/' + resource request.string = "GET %s HTTP/1.1\r\nHost: %s\r\n\r\n" % (resource, address) print "HTTPr request:" print "|||s|||" % request_string s = socket.socket() print "Attempting to connect to %s on port %s" % (address, port) try: s.connect((address, port)) print "Connected to %s on port %s" % (address, port) s.send(request_string) rsp = s.recv(100) print 'Received 100 bytes of HTTP response' print '|||%s|||' % rsp except socket.error, e: print "Connection to %s on port %s failed: %s" % (address, port, e) return False finally: print "Closing the connection" s.close() lines = rsp.splitlines() print 'First line of HTTP response: %s' % lines[0] try: version, status, message = re.split(r'\s+', lines[0], 2) print 'Version: %s, Status: %s, Message: %s' % (version, status, message) except ValueError: print 'Failed to split status line' return False if status in ['200', '301']: print 'Success - status was %s" % status' return True else: print 'Status was %s" % status' return False if __name__ == '__main__': from optparse import OptionParser parser = OptionParser() parser.add_option("-a", "--address", dest="address", default='localhost', help="ADDRESS for webserver", metavar="ADDRESS") parser.add_option("-p", "--port", dest="port", type="int", default=80, help="P0RT for webserver", metavar="P0RT") parser.add_option("-r", "--resource", dest="resource", default='index.html', help="RES0URCE to check", metavar="RES0URCE") (options, args) = parser.parse_args() print 'options: %s, args: %s' % (options, args) check = check_webserver(options.address, options.port, options.resource) print 'check_webserver returned %s' % check sys.exit(not check)
serrrgggeee@serrrgggeee-desktop:~$ python3 socket2.py -a 192.168.4.115 -p 80 -r apache2-default File "socket2.py", line 8 print "HTTPr request:" ^ SyntaxError: invalid syntax Error in sys.excepthook: Traceback (most recent call last): File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 63, in apport_excepthook from apport.fileutils import likely_packaged, get_recent_crashes File "/usr/lib/python3/dist-packages/apport/__init__.py", line 5, in <module> from apport.report import Report File "/usr/lib/python3/dist-packages/apport/report.py", line 21, in <module> from urllib.request import urlopen File "/usr/lib/python3.4/urllib/request.py", line 88, in <module> import http.client File "/usr/lib/python3.4/http/client.py", line 69, in <module> import email.parser File "/usr/lib/python3.4/email/parser.py", line 12, in <module> from email.feedparser import FeedParser, BytesFeedParser File "/usr/lib/python3.4/email/feedparser.py", line 27, in <module> from email import message File "/usr/lib/python3.4/email/message.py", line 15, in <module> from email import utils File "/usr/lib/python3.4/email/utils.py", line 29, in <module> import socket File "/home/serrrgggeee/socket.py", line 8 print 'Attemping to %s connect to %s on port ' (address, port) ^ SyntaxError: invalid syntax Original exception was: File "socket2.py", line 8 print "HTTPr request:" ^ SyntaxError: invalid syntax
serrrgggeee@serrrgggeee-desktop:~$ python socket2.py -a 192.168.4.115 -p 80 -r apache2-default options: {'resource': 'apache2-default', 'port': 80, 'address': '192.168.4.115'}, args: [] Traceback (most recent call last): File "socket2.py", line 47, in <module> check = check_webserver(options.address, options.port, options.resource) File "socket2.py", line 7, in check_webserver request.string = "GET %s HTTP/1.1\r\nHost: %s\r\n\r\n" % (resource, address) NameError: global name 'request' is not defined
Офлайн
49
В python3 оператор print стал функцией, поэтому нужно писать содержимое функции в скобках.
Для python версии 2.7 и выше этот синтаксис также корректен.
print("HTTPr request:")
NameError: global name 'request' is not defined
request.string = "GET %s HTTP/1.1\r\nHost: %s\r\n\r\n" % (resource, address)
Отредактировано Alen (Март 10, 2015 08:27:46)
Офлайн
0
теперь вот какие ошибки имею
serrrgggeee@serrrgggeee-desktop:~$ python3 socket2.py -a 192.168.4.115 -p 80 -r apache2-default File "socket2.py", line 19 except socket.error, e: ^ SyntaxError: invalid syntax Error in sys.excepthook: Traceback (most recent call last): File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 63, in apport_excepthook from apport.fileutils import likely_packaged, get_recent_crashes File "/usr/lib/python3/dist-packages/apport/__init__.py", line 5, in <module> from apport.report import Report File "/usr/lib/python3/dist-packages/apport/report.py", line 21, in <module> from urllib.request import urlopen File "/usr/lib/python3.4/urllib/request.py", line 88, in <module> import http.client File "/usr/lib/python3.4/http/client.py", line 69, in <module> import email.parser File "/usr/lib/python3.4/email/parser.py", line 12, in <module> from email.feedparser import FeedParser, BytesFeedParser File "/usr/lib/python3.4/email/feedparser.py", line 27, in <module> from email import message File "/usr/lib/python3.4/email/message.py", line 15, in <module> from email import utils File "/usr/lib/python3.4/email/utils.py", line 29, in <module> import socket File "/home/serrrgggeee/socket.py", line 8 print 'Attemping to %s connect to %s on port ' (address, port) ^ SyntaxError: invalid syntax Original exception was: File "socket2.py", line 19 except socket.error, e: ^ SyntaxError: invalid syntax
Офлайн
49
serrrgggeee
теперь вот какие ошибки имею
serrrgggeee
File “/home/serrrgggeee/socket.py”, line 8
Офлайн
0
ну вот что у меня
import socket import re import sys def check_webserver(address, port, resource): if not resource.startswith('/'): resource = '/' + resource request_string = "GET %s HTTP/1.1\r\nHost: %s\r\n\r\n" % (resource, address) print ("HTTPr request:") print("|||s|||" % request_string) s = socket.socket() print("Attempting to connect to %s on port %s" % (address, port)) try: s.connect((address, port)) print ("Connected to %s on port %s" % (address, port)) s.send(request_string) rsp = s.recv(100) print ('Received 100 bytes of HTTP response') print ('|||%s|||' % rsp) except socket.error, e: print ("Connection to %s on port %s failed: %s" % (address, port, e)) return False finally: print ("Closing the connection") s.close() lines = rsp.splitlines() print ('First line of HTTP response: %s' % lines[0]) try: version, status, message = re.split(r'\s+', lines[0], 2) print ('Version: %s, Status: %s, Message: %s' % (version, status, message) except ValueError: print ('Failed to split status line') return False if status in ['200', '301']: print ('Success - status was %s" % status') return True else: print ('Status was %s" % status') return False if __name__ == '__main__': from optparse import OptionParser parser = OptionParser() parser.add_option("-a", "--address", dest="address", default='localhost', help="ADDRESS for webserver", metavar="ADDRESS") parser.add_option("-p", "--port", dest="port", type="int", default=80, help="P0RT for webserver", metavar="P0RT") parser.add_option("-r", "--resource", dest="resource", default='index.html', help="RES0URCE to check", metavar="RES0URCE") (options, args) = parser.parse_args() print('options: %s, args: %s' % (options, args)) check = check_webserver(options.address, options.port, options.resource) print ('check_webserver returned %s' % check) sys.exit(not check)
Офлайн
49
serrrgggeee
а имя у меня не socket.py a socket2.py
File "/home/serrrgggeee/socket.py", line 8 print 'Attemping to %s connect to %s on port ' (address, port)
Офлайн