创建设备组fi

2024-04-19 05:02:53 发布

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

我正在尝试使用python脚本中的用户输入创建centos7a网络团队(bonding)。C级

import socket

# IP Address
IPADDR = socket.gethostbyname(socket.gethostname())
print IPADDR
# Netmask
NETMASK = raw_input("Enter Netmask address: ")
PREFIX = sum([bin(int(x)).count("1") for x in NETMASK.split(".")])
print NETMASK
# Gateway
GATEWAY = raw_input("Enter Gateway address: ")
print GATEWAY
# Run command and substitution
os.system("nmcli con add type team con-name team0 ifname team0 config '{"runner":{"name": "activebackup"}}'")
os.system("nmcli con mod team0 ipv4.addresses IPDDR/PREFIX")
os.system("nmcli con mod team0 ipv4.gateway GATEWAY")
os.system("nmcli con mod team0 connection.autoconnect yes")
os.system("nmcli con mod team0 ipv4.method manual")
os.system("nmcli con mod team0 ipv6.method ignore")

运行脚本时,会出现以下错误:

 File "team0.py", line 16
    os.system("nmcli con add type team con-name team0 ifname team0 config '{"runner":{"name": "activebackup"}}'")
                                                                                  ^
SyntaxError: invalid syntax

有人能帮我找出我做错了什么吗。 谢谢


Tags: name脚本modossocketconsystemgateway
2条回答

出现语法错误是因为没有转义引号"字符。解释器认为字符串已经结束,然后跳闸。你知道吗

可以使用反斜杠\来转义引号:

os.system("nmcli con add type team con-name team0 ifname team0 config '{\"runner\":{\"name\": \"activebackup\"}}'")

此外,请注意,当您声明的变量以字符串文字声明时,它们不会被拾取。您需要使用^{}修改这些命令,例如:

os.system("nmcli con mod team0 ipv4.addresses {}/{}".format(IPDDR, PREFIX))
os.system("nmcli con mod team0 ipv4.gateway {}".format(GATEWAY)")

有关如何使用format的更多信息,请参阅上述文档和其他SO问题。你知道吗

确实终止了字符串,如文本的颜色所示。它从nmcli开始。使用一对双引号将它们作为外部字符串中的文字。你知道吗

os.system("nmcli con add type team con-name team0 ifname team0 config '{""runner"":

。。。等等。或者,将字典值放入变量中,稍后将其附加到较大的字符串中:

my_dict = '{"runner":{"name": "activebackup"}}'
os.system("nmcli con add type team con-name team0 ifname team0 config '"
         + my_dict) + "'"

相关问题 更多 >