Python ValueError:以10为基数的int()的文本无效:';192.168.1.1';

Python ValueError:以10为基数的int()的文本无效:';192.168.1.1';,python,Python,错误ValueError:以10为基数的int()的文本无效: def ports(): os.system("clear") target = raw_input("Select a Target IP : ") target = int(target) os.system("nmap -O -Pn %s") % target sys.exit(); 需要帮忙吗 幸亏我找到了答案: os.system("clear") target = raw_input("Select a Target

错误ValueError:以10为基数的int()的文本无效:

def ports():
os.system("clear")
target = raw_input("Select a Target IP : ")
target = int(target)
os.system("nmap -O -Pn %s") % target
sys.exit();
需要帮忙吗

幸亏我找到了答案:

os.system("clear")
target = raw_input("Select a Target IP : ")
os.system("nmap -O -Pn %s" % target) 
sys.exit();

不要尝试将IP转换为
int
。 相反,将其作为字符串处理


真正的问题在于行
os.system(“nmap-O-Pn%s”)%target
,因为
os.system()。它应该是
os.system(“nmap-O-Pn%s”%target)

您必须将字符串传递给
os.system
,但是有一个api可以做您想做的事情,而不需要任何系统调用,并为您提供更多选项,要扫描主机,它非常简单:

import nmap
ip = "127.0.0.1"
scanner = nmap.PortScanner()
scanner.scan("-O -Pn {}".format(ip))
您还可以轻松地执行异步扫描:

import nmap
nma = nmap.PortScannerAsync()
def callback_result(host, scan_result):
    print('------------------')
    print(host, scan_result)

nma.scan(hosts='192.168.1.0/30', arguments='-sP', callback=callback_result)
while nma.still_scanning():
    print("Waiting >>>")
    nma.wait(2)   # you can do whatever you want but I choose to wait after the end of the scan

有许多例子
os.system
也不会给您任何要解析的输出,如果您正在进行系统调用,您应该使用“192.168.1.1”不是整数。你期待什么?它是一个由4'.'分隔的整数组成的字符串。只要去掉
int(target)
,代码片段就可以很好地工作了。不清楚你在问什么问题。为什么要调用
int()
?IP地址不是整数。您希望得到什么?只需按原样将
目标格式化为字符串。当我删除int(target)os.system(“nmap-O-Pn%s”)%target TypeError:不支持%的操作数类型:'int'和'str'