Python命令行环境中如何获取多用户输入以实现端口扫描功能
你此前出现语法错误的核心原因是使用了错误的行尾反斜杠:反斜杠仅用于将单行逻辑代码拆分为多行物理行输入,单独的赋值语句本身是完整逻辑行,末尾加反斜杠会导致解释器将下一行内容和当前行拼接,进而触发语法错误。以下是两种可行的实现方案:
方案1:直接在Python交互式REPL逐行输入
无需添加任何特殊符号,逐行输入代码即可,循环部分输入时注意保持缩进,全部代码输入完成后按两次回车触发执行:
# 先执行python/python3命令进入REPL环境后输入以下内容 from socket import * ip = input("Submit IP to scan:") start = input("Submit starting port:") end = input("Submit ending port:") print("Scanning IP:", ip) for port in range(int(start),int(end)): print("Scanning port:" + str(port) + "..") var_socket = socket(AF_INET,SOCK_STREAM) var_socket.settimeout(3) if var_socket.connect_ex((ip,port)) == 0: print("port", port, "is open") else: print("err code:", var_socket.connect_ex((ip,port))) var_socket.close() print("Scanning completed!")
方案2:直接通过shell命令行传递代码执行
不需要进入REPL,直接在终端中一次性执行全部代码:
- Windows PowerShell环境:
@' from socket import * ip = input("Submit IP to scan:") start = input("Submit starting port:") end = input("Submit ending port:") print("Scanning IP:", ip) for port in range(int(start),int(end)): print("Scanning port:" + str(port) + "..") var_socket = socket(AF_INET,SOCK_STREAM) var_socket.settimeout(3) if var_socket.connect_ex((ip,port)) == 0: print("port", port, "is open") else: print("err code:", var_socket.connect_ex((ip,port))) var_socket.close() print("Scanning completed!") '@ | python
- Windows CMD环境:
python -c "from socket import *;ip=input('Submit IP to scan:');start=input('Submit starting port:');end=input('Submit ending port:');print('Scanning IP:', ip);for port in range(int(start),int(end)):print('Scanning port:' + str(port) + '..');var_socket = socket(AF_INET,SOCK_STREAM);var_socket.settimeout(3);if var_socket.connect_ex((ip,port)) == 0:print('port', port, 'is open');else:print('err code:', var_socket.connect_ex((ip,port)));var_socket.close();print('Scanning completed!')"
内容的提问来源于stack exchange,提问作者Brakke Baviaan
相关产品推荐
相关产品推荐

