gpt4 book ai didi

Python Linux 脚本(whois 错误)

转载 作者:太空宇宙 更新时间:2023-11-04 06:03:24 25 4
gpt4 key购买 nike

我正在尝试在 Linux 上创建一个 python 脚本,该脚本对从“netstat”命令解析的每个已连接/正在连接的 IP 地址执行“whois”命令。

我收到一条错误消息“sh:1:语法错误:未终止的引号字符串”

以及下面发布的 whois 使用选项。

谁能向我解释一下脚本出了什么问题吗?我相信这与 for 循环及其执行 whois 命令的方式有关,我似乎找不到解决方案。以下是有问题的脚本:

#!/usr/bin/python
from os import system

answer = [system("netstat -alpntu46 |grep 'ESTABLISHED\|SYN_RECV' | awk '{print $5 }' |cut -d: -f1'")]

for i in answer:
system('whois')

编辑所以我原来的问题已经完全解决,我没有收到任何错误。但是,现在脚本所做的只是列出 IP 地址,并在其下方列出 whois 用法示例:

-h HOST, --host HOST   connect to server HOST
-p PORT, --port PORT connect to PORT
-H hide legal disclaimers
--verbose explain what is being done
--help display this help and exit
--version output version information and exit"

所以它似乎正在运行答案变量,但无法在每个地址上运行 whois 命令。

最佳答案

您的命令字符串(在system()命令内)比需要的多了一个'(在字符串末尾)。这里更正一下:

#!/usr/bin/python
from os import system

answer = [system("netstat -alpntu46 |grep 'ESTABLISHED\|SYN_RECV' | awk '{print $5 }' |cut -d: -f1")]

for i in answer:
system('whois')

编辑(你的第二个问题):

当您在 python 中执行 for i in answer 时,您将循环遍历答案中的所有项目,这是正确的,但是对于您循环的每个 IP 地址,您仅执行 'whois' 命令,而不传递任何参数。您应该将参数添加到字符串中,如下所示:

for i in answer:
system('whois %s' % i)

假设变量 i 保存 ip 字符串。

关于Python Linux 脚本(whois 错误),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37187837/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com