Python:使用variab执行shell命令

2024-04-26 14:41:03 发布

您现在位置:Python中文网/ 问答频道 /正文

在我的实验室里,我需要将服务器上的接口更改为随机的IPv6地址。我有两个剧本。第一个脚本组成了一个随机的IPv6地址,工作非常完美。我尝试获取该脚本的输出,并将其用作第二个脚本中的变量。然后在该接口上运行ifan address config。这就是我所要做的事情的基本情况。 下面是生成随机IPv6地址IPv6的脚本_发电机在

from random2 import seed, getrandbits
from ipaddress import IPv6Network, IPv6Address

subnet = u'1234:5678:ab:cde::/64'

seed()
network = IPv6Network(subnet)
address = IPv6Address(network.network_address + getrandbits(network.max_prefixlen - network.prefixlen))

print(address)

它应该获取第一个的输出并执行ifconfig命令。在

^{pr2}$

我得到以下错误:

ubuntu:~$ python change_ipv6.py 
1234:5678:ab:cde:8087:1bb6:b264:acdd
<module: Host name lookup failure
getaddrinfo: ipv6_gen: -3
ipv6_gen: Host name lookup failure
ifconfig: `--help' gives usage information.

当我运行ifconfig时,IPv6地址没有设置。不知道我做错了什么,试着研究了一段时间,什么也没有。任何帮助都将不胜感激。在


Tags: fromimport脚本abaddress地址networkseed
1条回答
网友
1楼 · 发布于 2024-04-26 14:41:03

第二个脚本看起来有点奇怪。在

将模块ipv6_gen分配给变量ipv6,然后将其用于shell命令。在

试用此版本:

import ipv6_gen
import os, commands
import subprocess
import shlex

ipv6 = ipv6_gen.address
shell_cmd = ("sudo ifconfig en0 inet6 add %s" % ipv6)

subprocess_cmd = shlex.split(shell_cmd)
subprocess.call(subprocess_cmd)

相关问题 更多 >