gpt4 book ai didi

Python:执行Windows Tracert

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

我是 Python 新手,正在尝试编写我的第一个程序。

我想要做的是通过在输出上添加日期来修改 Windows tracert 命令输出。

c:\Python\Codes>more tr.py
import os
import time
print (time.strftime("\nDate: %d %B %Y"))
os.system('tracert')

c:\Python\Codes>tr.py 127.0.0.1

Date: 09 March 2018

Usage: tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout]
[-R] [-S srcaddr] [-4] [-6] target_name

Options:
-d Do not resolve addresses to hostnames.
-h maximum_hops Maximum number of hops to search for target.
-j host-list Loose source route along host-list (IPv4-only).
-w timeout Wait timeout milliseconds for each reply.
-R Trace round-trip path (IPv6-only).
-S srcaddr Source address to use (IPv6-only).
-4 Force using IPv4.
-6 Force using IPv6.

c:\Python\Codes>

但是Python代码中的tracert命令没有正确执行。

这就是我所期待的。

c:\Python\Codes>tr.py 127.0.0.1

Date: 09 March 2018

Tracing route to 127.0.0.1
over a maximum of 30 hops:

1 <1 ms <1 ms <1 ms 127.0.0.1

Trace complete.

c:\Python\Codes>

请告诉我如何解决这个问题。谢谢。

最佳答案

您尚未将 python shell 参数传递给 tracert,因此 Windows tracert 建议您提供一个参数(例如“127.0.0.1”)

最简单的方法是更改​​代码以执行另外两件事

  1. 获取您提供给 python 脚本的 shell 参数。 Python 在 sys 模块中有一个数组:sys.argv,其中包含脚本参数。
  2. 将其传递给tracert。您可以使用带有 + 运算符的字符串连接。

这是一个简单的更改:

import os
import time
import sys
print (time.strftime("\nDate: %d %B %Y"))
os.system('tracert' + ' ' + sys.argv[1])

注意,我必须在对tracert 的调用和参数之间添加一个空格。 我特意叫出来让您看到它,但您也可以仅调用 'tracert ' 并在末尾添加空格。

这是在我的 Mac 上运行的(它有 traceroute,但想法是一样的):

[mjl@milo:~/hax]
[18:42](hax)$ python tr.py 127.0.0.1

Date: 09 March 2018
traceroute to 127.0.0.1 (127.0.0.1), 64 hops max, 52 byte packets
1 localhost (127.0.0.1) 0.312 ms 0.077 ms 0.043 ms
[mjl@milo:~/hax]
[18:42](hax)$

一个(稍微)更好的方法是使用subprocess:

import subprocess
import time
import sys
print (time.strftime("\nDate: %d %B %Y"))
subprocess.run(["tracert",sys.argv[1]])

现在您不必在命令后添加空格了。但是您必须将命令及其所有参数作为数组中的元素提供给 subprocess.run()

注意:- 这些代码都不进行任何错误检查。如果您在不带参数的情况下运行 tr.py ,则会出现错误:

[mjl@milo:~/hax]
[18:42](hax)$ python tr.py

Date: 09 March 2018
Traceback (most recent call last):
File "tr.py", line 5, in <module>
os.system('traceroute' + ' ' + sys.argv[1])
IndexError: list index out of range

关于Python:执行Windows Tracert,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49188087/

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