Python: 使用变量执行 shell 命令
Python: execute shell command using variable
在我的实验室中,我需要将服务器上的接口更改为随机 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 地址。不确定我做错了什么,尝试研究了一段时间但一无所获。任何帮助将不胜感激。
第二个脚本看起来有点奇怪。
您将模块 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)
在我的实验室中,我需要将服务器上的接口更改为随机 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 地址。不确定我做错了什么,尝试研究了一段时间但一无所获。任何帮助将不胜感激。
第二个脚本看起来有点奇怪。
您将模块 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)