在我的实验室中,我需要将服务器上的接口更改为随机IPv6地址。我有两个脚本。第一个脚本构成一个随机的IPv6地址并且工作正常。我试图获取该脚本的输出并将其用作第二个脚本中的变量。然后运行ifconfig命令在该接口上设置该IPv6地址。这是我试图做的事情的总体失误。 以下是生成随机IPv6地址的脚本ipv6_gen.py
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命令。
import ipv6_gen
import os, commands
import subprocess
import shlex
ipv6=ipv6_gen
shell_cmd = ("sudo ifconfig en0 inet6 add %s" %ipv6)
subprocess_cmd = shlex.split(shell_cmd)
subprocess.call(subprocess_cmd)
我收到以下错误:
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地址未设置。我不确定我做错了什么,试着研究一下这一段时间并没有得到任何结果。任何帮助将不胜感激。
答案 0 :(得分:0)
第二个脚本看起来有点奇怪。
您将模块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)