В моей лаборатории мне нужно изменить интерфейс на сервере на случайный адрес 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 не устанавливается. Не уверен, что я делаю неправильно, пытался исследовать это некоторое время и ничего не получил. Любая помощь будет оценена по достоинству.
ifconfig
устарел в системах Linux, и вместо него следует использоватьip
. - person Michael Hampton   schedule 11.02.2018