运行 教科书中的参数脚本时出错
Error when running argument script from textbook
我有一个为 Python 编码 class 的初学者。我们正在使用的书是"Coding for Penetration Testers Building Better Tools"。在第二章中,我们开始创建 Python 个脚本,我似乎无法弄清楚我应该从书中重新输入的这个脚本有什么问题。见下文。
import httplib, sys
if len(sys.argv) < 3:
sys.exit("Usage " + sys.argv[0] + " <hostname> <port>\n")
host = sys.argv[1]
port = sys.argv[2]
client = httplib.HTTPConnection(host,port)
client.request("GET","/")
resp = client.getresponse()
client.close()
if resp.status == 200:
print host + " : OK"
sys.exit()
print host + " : DOWN! (" + resp.status + " , " + resp.reason + ")"
在 运行 编译代码后,我在第 20 行(最后一行打印)出现错误,指出:
selmer@ubuntu:~$ python /home/selmer/Desktop/scripts/arguments.py google.com 80
Traceback (most recent call last):
File "/home/selmer/Desktop/scripts/arguments.py", line 20, in <module>
print host + " : DOWN! (" + resp.status + " , " + resp.reason + ")"
TypeError: cannot concatenate 'str' and 'int' objects
所有代码都在 运行 Ubuntu 14.04 中,在带有 Konsole 的虚拟机中并在 Gedit 中创建。如有任何帮助,我们将不胜感激!
替换打印行来自:
print host + " : DOWN! (" + resp.status + " , " + resp.reason + ")"
与:
print '%s DOWN! (%d, %s)' % (host, resp.status, resp.reason)
原始行尝试将 int (resp.status
) 附加到字符串,如错误消息所述。
我有一个为 Python 编码 class 的初学者。我们正在使用的书是"Coding for Penetration Testers Building Better Tools"。在第二章中,我们开始创建 Python 个脚本,我似乎无法弄清楚我应该从书中重新输入的这个脚本有什么问题。见下文。
import httplib, sys
if len(sys.argv) < 3:
sys.exit("Usage " + sys.argv[0] + " <hostname> <port>\n")
host = sys.argv[1]
port = sys.argv[2]
client = httplib.HTTPConnection(host,port)
client.request("GET","/")
resp = client.getresponse()
client.close()
if resp.status == 200:
print host + " : OK"
sys.exit()
print host + " : DOWN! (" + resp.status + " , " + resp.reason + ")"
在 运行 编译代码后,我在第 20 行(最后一行打印)出现错误,指出:
selmer@ubuntu:~$ python /home/selmer/Desktop/scripts/arguments.py google.com 80
Traceback (most recent call last):
File "/home/selmer/Desktop/scripts/arguments.py", line 20, in <module>
print host + " : DOWN! (" + resp.status + " , " + resp.reason + ")"
TypeError: cannot concatenate 'str' and 'int' objects
所有代码都在 运行 Ubuntu 14.04 中,在带有 Konsole 的虚拟机中并在 Gedit 中创建。如有任何帮助,我们将不胜感激!
替换打印行来自:
print host + " : DOWN! (" + resp.status + " , " + resp.reason + ")"
与:
print '%s DOWN! (%d, %s)' % (host, resp.status, resp.reason)
原始行尝试将 int (resp.status
) 附加到字符串,如错误消息所述。