Kali Linux系统预装了Python和Perl解释器,我是一直长期学习Python的,在这里分享一个Python程序.
我们要用这个程序连接某台主机的既定端口,以判断这个端口是否是处于开放状态,因此,按照思路一步一步来:
#!/usr/bin/python
ip = input("请输入IP地址: ")
raw_input函数用来从用户界面获取数据
port = input("请输入端口")
input()函数用来获取端口号,这里应该是整型变量
将这个程序命名后,使用chmod命令赋予脚本程序可执行权限,简单测试一下(其实没有必要),程序在启动会会提示用户输入端口号和端口号,我们来继续完善功能。 1.添加端口扫描功能
import socket # socket函数显著简化了网络嵌套字的设定和操作
ip = input("请输入IP地址: ")
port = input("请输入端口: ")
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 建立TCP网络嵌套字
if s.connect_ex((ip, port)):
print("Port", port, "is closed")
else:
print("Port", port, "is open")
经过测试,不出意外的报错了,我们来看看这没水平的代码为何报错了:
问题出在input()上面,我们编写的大部分程序,都需要读取输入并对其进行处理,而基本的输入操作是从键盘键入数据。Python从键盘键入数据,大多使用其内置的input()函数。但是,不同于程序设计初学者常接触的C和C++,我们不需要在输入之时规定变量的类型。相反,我们可以非常便捷的使用a = input()对任何数据类型的变量a进行赋值,无论是int,float还是列表等等。但是这并不代表Python将程序员的判断数据类型工作完全省去了。 这时候突然想到一个解决方案,那就是Python2中的raw_input()函数,Python3中和input()合并了,但是相比于后者,raw_input()返回的是字符,如此以来只需简单的修改代码,就可以,我们在Python2的环境中运行即可。
ip = raw_input("请输入IP地址: ")
这里测试一下校园网(嘿嘿,我哪里有什么坏心思)