SaltStack常用模块

SaltStack常用模块

SaltStack模块介绍

Module是日常使用SaltStack接触最多的一个组件,其用于管理对象操作,这也是SaltStack通过Push的方式进行管理的入口,比如我们日常简单的执行命令、查看包安装情况、查看服务运行情况等工作都是通过SaltStack Module来实现的。

当安装好Master和Minion包后,系统上会安装很多Module,大家可以通过以下命令查看支持的所有Module列表:

//查看所有module列表
[root@master ~]# salt minion sys.list_modules
minion:
    - acl
    - aliases
    - alternatives
    - apache
    - archive
    - artifactory
    - at
    - baredoc
    - beacons
    - bigip
    - btrfs
    - buildout
    - chroot
    - cloud
    - cmd
    - composer
    - config
    - consul
    - container_resource
    - cp
    - cron
    - cryptdev
    - data
    - defaults
    - devinfo
    - devmap
    - dig
    - disk
    - django
    - dnsmasq
    - dnsutil
    - drbd
    - environ
    - ethtool
    - event
    - extfs
    - file
    - firewalld
    - freezer
    - gem
    - genesis
    - git
    - glassfish
    - glusterfs
    - gnome
    - google_chat
    - grafana4
    - grains
    - group
    - hashutil
    - helm
    - highstate_doc
    - hosts
    - http
    - hue
    - incron
    - ini
    - inspector
    - introspect
    - iosconfig
    - ip
    - ipset
    - iptables
    - jboss7
    - jboss7_cli
    - jinja
    - k8s
    - kernelpkg
    - key
    - keyboard
    - kmod
    - kubeadm
    - locale
    - locate
    - log
    - logrotate
    - lowpkg
    - lvm
    - mandrill
    - match
    - mattermost
    - mine
    - minion
    - modjk
    - mount
    - msteams
    - nagios_rpc
    - namecheap_domains
    - namecheap_domains_dns
    - namecheap_domains_ns
    - namecheap_ssl
    - namecheap_users
    - network
    - nexus
    - nfs3
    - nftables
    - nova
    - nspawn
    - nxos
    - nxos_api
    - nxos_upgrade
    - openscap
    - openstack_config
    - opsgenie
    - out
    - pagerduty
    - pagerduty_util
    - pam
    - parallels
    - partition
    - peeringdb
    - pillar
    - pip
    - pkg
    - pkg_resource
    - ps
    - publish
    - pushover
    - pyenv
    - qemu_img
    - qemu_nbd
    - quota
    - raid
    - random
    - random_org
    - rbenv
    - rest_sample_utils
    - restartcheck
    - ret
    - rsync
    - rvm
    - s3
    - s6
    - salt_proxy
    - salt_version
    - saltcheck
    - saltutil
    - schedule
    - scsi
    - sdb
    - seed
    - selinux
    - serverdensity_device
    - service
    - shadow
    - slack
    - slsutil
    - smbios
    - smtp
    - solrcloud
    - sqlite3
    - ssh
    - state
    - status
    - statuspage
    - supervisord
    - sys
    - sysctl
    - sysfs
    - syslog_ng
    - system
    - telegram
    - telemetry
    - temp
    - test
    - timezone
    - tuned
    - udev
    - uptime
    - user
    - vault
    - vbox_guest
    - virt
    - virtualenv
    - vsphere
    - webutil
    - x509
    - xfs
    - xml
    - zabbix
    - zenoss
//查看指定module的所有function
[root@master ~]# salt minion sys.list_functions cmd
minion:
    - cmd.exec_code
    - cmd.exec_code_all
    - cmd.has_exec
    - cmd.powershell
    - cmd.powershell_all
    - cmd.retcode
    - cmd.run
    - cmd.run_all
    - cmd.run_bg
    - cmd.run_chroot
    - cmd.run_stderr
    - cmd.run_stdout
    - cmd.script
    - cmd.script_retcode
    - cmd.shell
    - cmd.shell_info
    - cmd.shells
    - cmd.tty
    - cmd.which
    - cmd.which_bin
//查看指定module的用法
[root@master ~]# salt minion sys.doc cmd
cmd.exec_code:

    Pass in two strings, the first naming the executable language, aka -
    python2, python3, ruby, perl, lua, etc. the second string containing
    the code you wish to execute. The stdout will be returned.

    All parameters from :mod:`cmd.run_all <salt.modules.cmdmod.run_all>` except python_shell can be used.

    CLI Example:
//SaltStack默认也支持一次执行多个Module,Module之间通过逗号隔开,默认传参之间也是用逗号分隔,也支持指定传参分隔符号--args-separator=@即可
[root@master ~]# salt minion test.echo,cmd.run,service.status hello,hostname,salt-minion
minion:
    ----------
    cmd.run:
        minion
    service.status:
        True
    test.echo:
        hello
[root@master ~]# 

SaltStack常用模块

SaltStack常用模块之network

network.active_tcp
//返回所有活动的tcp连接
[root@master ~]# salt '*' network.active_tcp
minion:
    ----------
    0:
        ----------
        local_addr:
            192.168.197.128
        local_port:
            22
        remote_addr:
            192.168.197.1
        remote_port:
            51788
    1:
        ----------
        local_addr:
            192.168.197.128
        local_port:
            49502
        remote_addr:
            192.168.197.131
        remote_port:
            4505
    2:
        ----------
        local_addr:
            192.168.197.128
        local_port:
            22
        remote_addr:
            192.168.197.1
        remote_port:
            51789
master:
    ----------
    0:
        ----------
        local_addr:
            192.168.197.131
        local_port:
            34532
        remote_addr:
            192.168.197.131
        remote_port:
            4505
    1:
        ----------
        local_addr:
            192.168.197.131
        local_port:
            22
        remote_addr:
            192.168.197.1
        remote_port:
            51786
    2:
        ----------
        local_addr:
            192.168.197.131
        local_port:
            22
        remote_addr:
            192.168.197.1
        remote_port:
            51787
    3:
        ----------
        local_addr:
            192.168.197.131
        local_port:
            4505
        remote_addr:
            192.168.197.131
        remote_port:
            34532
    4:
        ----------
        local_addr:
            192.168.197.131
        local_port:
            4505
        remote_addr:
            192.168.197.128
        remote_port:
            49502

network.calc_net
//通过IP和子网掩码计算出网段
[root@master ~]# salt '*' network.calc_net 192.168.197.128 255.255.255.0
master:
    192.168.197.0/24
minion:
    192.168.197.0/24
network.connect
//测试minion至某一台服务器的网络是否连通
[root@master ~]# salt '*' network.connect lol.qq.com 80
master:
    ----------
    comment:
        Successfully connected to lol.qq.com (111.47.223.165) on tcp port 80
    result:
        True
minion:
    ----------
    comment:
        Successfully connected to lol.qq.com (111.47.224.164) on tcp port 80
    result:
        True

network.default_route
//查看默认路由
[root@master ~]# salt '*' network.default_route
master:
    |_
      ----------
      addr_family:
          inet
      destination:
          0.0.0.0
      flags:
          UG
      gateway:
          192.168.197.2
      interface:
          ens33
      netmask:
          0.0.0.0
    |_
      ----------
      addr_family:
          inet6
      destination:
          ::/0
      flags:
          !n
      gateway:
          ::
      interface:
          lo
      netmask:
    |_
      ----------
      addr_family:
          inet6
      destination:
          ::/0
      flags:
          !n
      gateway:
          ::
      interface:
          lo
      netmask:
minion:
    |_
      ----------
      addr_family:
          inet
      destination:
          0.0.0.0
      flags:
          UG
      gateway:
          192.168.197.2
      interface:
          ens33
      netmask:
          0.0.0.0
    |_
      ----------
      addr_family:
          inet6
      destination:
          ::/0
      flags:
          !n
      gateway:
          ::
      interface:
          lo
      netmask:
    |_
      ----------
      addr_family:
          inet6
      destination:
          ::/0
      flags:
          !n
      gateway:
          ::
      interface:
          lo
      netmask:
[root@master ~]# 

network.get_fqdn
//查看主机的fqdn(完全限定域名)
[root@master ~]# salt '*' network.get_fqdn
minion:
    minion
master:
    master
[root@master ~
network.get_hostname
//获取主机名
[root@master ~]# salt '*' network.get_hostname
master:
    master
minion:
    minion
network.get_route
//查询到一个目标网络的路由信息
[root@master ~]# salt '*' network.get_route 192.168.197.1
master:
    ----------
    destination:
        192.168.197.1
    gateway:
        None
    interface:
        ens33
    source:
        192.168.197.131
minion:
    ----------
    destination:
        192.168.197.1
    gateway:
        None
    interface:
        ens33
    source:
        192.168.197.128

network.hw_addr
//返回指定网卡的MAC地址
[root@master ~]# salt '*' network.hw_addr ens33
master:
    00:0c:29:d7:ce:07
minion:
    00:0c:29:8f:21:d6
[root@master ~]# salt '*' network.hw_addr lo
master:
    00:00:00:00:00:00
minion:
    00:00:00:00:00:00

network.ifacestartswith
//从特定CIDR检索接口名称
[root@master ~]# salt '*' network.ifacestartswith 192.168
master:
    - ens33
    - virbr0
minion:
    - ens33
    - virbr0
[root@master ~]# salt '*' network.ifacestartswith 192.168.197
master:
    - ens33
minion:
    - ens33
[root@master ~]# 

network.in_subnet
//判断当前主机是否在某一个网段内
[root@master ~]# salt '*' network.in_subnet 192.168.197.0/24
minion:
    True
master:
    True
[root@master ~]# salt '*' network.in_subnet 192.168.188.0/24
master:
    False
minion:
    False
[root@master ~]# 

network.interface
//返回指定网卡的信息
[root@master ~]# salt '*' network.interface ens33
master:
    |_
      ----------
      address:
          192.168.197.131
      broadcast:
          192.168.197.255
      label:
          ens33
      netmask:
          255.255.255.0
minion:
    |_
      ----------
      address:
          192.168.197.128
      broadcast:
          192.168.197.255
      label:
          ens33
      netmask:
          255.255.255.0

network.interface_ip
//返回指定网卡的IP地址
[root@master ~]# salt '*' network.interface_ip ens33
master:
    192.168.197.131
minion:
    192.168.197.128
[root@master ~]# 

network.interfaces
//返回当前系统中所有的网卡信息
[root@master ~]# salt '*' network.interfaces
master:
    ----------
    ens33:
        ----------
        hwaddr:
            00:0c:29:d7:ce:07
        inet:
            |_
              ----------
              address:
                  192.168.197.131
              broadcast:
                  192.168.197.255
              label:
                  ens33
              netmask:
                  255.255.255.0
        inet6:
            |_
              ----------
              address:
                  fe80::1f2f:a9f9:78a7:7cc
              prefixlen:
                  64
              scope:
                  link
        up:
            True
    lo:
        ----------
        hwaddr:
            00:00:00:00:00:00
        inet:
            |_
              ----------
              address:
                  127.0.0.1
              broadcast:
                  None
              label:
                  lo
              netmask:
                  255.0.0.0
        inet6:
            |_
              ----------
              address:
                  ::1
              prefixlen:
                  128
              scope:
                  host
        up:
            True
    virbr0:
        ----------
        hwaddr:
            52:54:00:f1:42:78
        inet:
            |_
              ----------
              address:
                  192.168.122.1
              broadcast:
                  192.168.122.255
              label:
                  virbr0
              netmask:
                  255.255.255.0
        up:
            True
    virbr0-nic:
        ----------
        hwaddr:
            52:54:00:f1:42:78
        up:
            False
minion:
    ----------
    ens33:
        ----------
        hwaddr:
            00:0c:29:8f:21:d6
        inet:
            |_
              ----------
              address:
                  192.168.197.128
              broadcast:
                  192.168.197.255
              label:
                  ens33
              netmask:
                  255.255.255.0
        inet6:
            |_
              ----------
              address:
                  fe80::6793:315a:836e:8db0
              prefixlen:
                  64
              scope:
                  link
        up:
            True
    lo:
        ----------
        hwaddr:
            00:00:00:00:00:00
        inet:
            |_
              ----------
              address:
                  127.0.0.1
              broadcast:
                  None
              label:
                  lo
              netmask:
                  255.0.0.0
        inet6:
            |_
              ----------
              address:
                  ::1
              prefixlen:
                  128
              scope:
                  host
        up:
            True
    virbr0:
        ----------
        hwaddr:
            52:54:00:67:57:03
        inet:
            |_
              ----------
              address:
                  192.168.122.1
              broadcast:
                  192.168.122.255
              label:
                  virbr0
              netmask:
                  255.255.255.0
        up:
            True
    virbr0-nic:
        ----------
        hwaddr:
            52:54:00:67:57:03
        up:
            False
[root@master ~]# 
network.ip_addrs
//返回一个IPv4的地址列表
[root@master ~]# salt '*' network.ip_addrs
master:
    - 192.168.122.1
    - 192.168.197.131
minion:
    - 192.168.122.1
    - 192.168.197.128
[root@master ~]# 

network.netstat
//返回所有打开的端口和状态
[root@master ~]# salt '*' network.netstat
master:
    |_
      ----------
      inode:
          3868
      local-address:
          0.0.0.0:111
      program:
          1/systemd
      proto:
          tcp
      recv-q:
          0
      remote-address:
          0.0.0.0:*
      send-q:
          0
      state:
          LISTEN
      user:
          0
    |_
      ----------
      inode:
          40293
      local-address:
          192.168.122.1:53
      program:
          1856/dnsmasq
      proto:
          tcp
      recv-q:
          0
      remote-address:
          0.0.0.0:*
      send-q:
          0
      state:
          LISTEN
      user:
          0
    |_
      ----------
      inode:
          28126
      local-address:
          0.0.0.0:22
      program:
          1171/sshd
      proto:
          tcp
      recv-q:
          0
      remote-address:
          0.0.0.0:*
      send-q:
          0
      state:
          LISTEN
      user:
          0
    |_
      ----------
      inode:
          31311
      local-address:
          127.0.0.1:631
      program:
          1165/cupsd
      proto:
          tcp
      recv-q:
          0
      remote-address:
          0.0.0.0:*
      send-q:
          0
      state:
          LISTEN
      user:
          0
    |_
      ----------
      inode:
          8778988
      local-address:
          0.0.0.0:4505
      program:
          3501982/python3.6
      proto:
          tcp
      recv-q:
          0
      remote-address:
          0.0.0.0:*
      send-q:
          0
      state:
          LISTEN
      user:
          0
    |_
      ----------
      inode:
          8781968
      local-address:
          0.0.0.0:4506
      program:
          3501988/python3.6
      proto:
          tcp
      recv-q:
          0
      remote-address:
          0.0.0.0:*
      send-q:
          0
      state:
          LISTEN
      user:
          0
    |_
      ----------
      inode:
          8779188
      local-address:
          192.168.197.131:34532
      program:
          1914470/python3.6
      proto:
          tcp
      recv-q:
          0
      remote-address:
          192.168.197.131:4505
      send-q:
          0
      state:
          ESTABLISHED
      user:
          0
    |_
      ----------
      inode:
          0
      local-address:
          127.0.0.1:43232
      program:
          -
      proto:
          tcp
      recv-q:
          0
      remote-address:
          127.0.0.1:4506
      send-q:
          0
      state:
          TIME_WAIT
      user:
          0
    |_
      ----------
      inode:
          0
      local-address:
          192.168.197.131:40880
      program:
          -
      proto:
          tcp
      recv-q:
          0
      remote-address:
          192.168.197.131:4506
      send-q:
          0
      state:
          TIME_WAIT
      user:
          0
    |_
      ----------
      inode:
          8993689
      local-address:
          192.168.197.131:22
      program:
          3549260/sshd:
      proto:
          tcp
      recv-q:
          0
      remote-address:
          192.168.197.1:51786
      send-q:
          0
      state:
          ESTABLISHED
      user:
          0
    |_
      ----------
      inode:
          9005395
      local-address:
          192.168.197.131:22
      program:
          3549303/sshd:
      proto:
          tcp
      recv-q:
          0
      remote-address:
          192.168.197.1:51787
      send-q:
          0
      state:
          ESTABLISHED
      user:
          0
    |_
      ----------
      inode:
          0
      local-address:
          127.0.0.1:43236
      program:
          -
      proto:
          tcp
      recv-q:
          0
      remote-address:
          127.0.0.1:4506
      send-q:
          0
      state:
          TIME_WAIT
      user:
          0
    |_
      ----------
      inode:
          8776477
      local-address:
          192.168.197.131:4505
      program:
          3501982/python3.6
      proto:
          tcp
      recv-q:
          0
      remote-address:
          192.168.197.131:34532
      send-q:
          0
      state:
          ESTABLISHED
      user:
          0
    |_
      ----------
      inode:
          8776517
      local-address:
          192.168.197.131:4505
      program:
          3501982/python3.6
      proto:
          tcp
      recv-q:
          0
      remote-address:
          192.168.197.128:49502
      send-q:
          0
      state:
          ESTABLISHED
      user:
          0
    |_
      ----------
      inode:
          243417
      local-address:
          :::3306
      program:
          72342/mysqld
      proto:
          tcp6
      recv-q:
          0
      remote-address:
          :::*
      send-q:
          0
      state:
          LISTEN
      user:
          27
    |_
      ----------
      inode:
          3870
      local-address:
          :::111
      program:
          1/systemd
      proto:
          tcp6
      recv-q:
          0
      remote-address:
          :::*
      send-q:
          0
      state:
          LISTEN
      user:
          0
    |_
      ----------
      inode:
          4420252
      local-address:
          :::8080
      program:
          1817280/java
      proto:
          tcp6
      recv-q:
          0
      remote-address:
          :::*
      send-q:
          0
      state:
          LISTEN
      user:
          0
    |_
      ----------
      inode:
          28128
      local-address:
          :::22
      program:
          1171/sshd
      proto:
          tcp6
      recv-q:
          0
      remote-address:
          :::*
      send-q:
          0
      state:
          LISTEN
      user:
          0
    |_
      ----------
      inode:
          31310
      local-address:
          ::1:631
      program:
          1165/cupsd
      proto:
          tcp6
      recv-q:
          0
      remote-address:
          :::*
      send-q:
          0
      state:
          LISTEN
      user:
          0
    |_
      ----------
      inode:
          4418289
      local-address:
          127.0.0.1:8005
      program:
          1817280/java
      proto:
          tcp6
      recv-q:
          0
      remote-address:
          :::*
      send-q:
          0
      state:
          LISTEN
      user:
          0
    |_
      ----------
      inode:
          33857
      local-address:
          0.0.0.0:39916
      program:
          976/avahi-daemon:
      proto:
          udp
      recv-q:
          0
      remote-address:
          0.0.0.0:*
      send-q:
          0
      user:
          70
    |_
      ----------
      inode:
          0
      local-address:
          192.168.197.131:45078
      program:
          9162184
      proto:
          udp
      recv-q:
          0
      remote-address:
          192.168.197.2:53
      send-q:
          0
      user:
          ESTABLISHED
    |_
      ----------
      inode:
          40292
      local-address:
          192.168.122.1:53
      program:
          1856/dnsmasq
      proto:
          udp
      recv-q:
          0
      remote-address:
          0.0.0.0:*
      send-q:
          0
      user:
          0
    |_
      ----------
      inode:
          40289
      local-address:
          0.0.0.0:67
      program:
          1856/dnsmasq
      proto:
          udp
      recv-q:
          0
      remote-address:
          0.0.0.0:*
      send-q:
          0
      user:
          0
    |_
      ----------
      inode:
          0
      local-address:
          192.168.197.131:68
      program:
          8950419
      proto:
          udp
      recv-q:
          0
      remote-address:
          192.168.197.254:67
      send-q:
          0
      user:
          ESTABLISHED
    |_
      ----------
      inode:
          3869
      local-address:
          0.0.0.0:111
      program:
          1/systemd
      proto:
          udp
      recv-q:
          0
      remote-address:
          0.0.0.0:*
      send-q:
          0
      user:
          0
    |_
      ----------
      inode:
          33855
      local-address:
          0.0.0.0:5353
      program:
          976/avahi-daemon:
      proto:
          udp
      recv-q:
          0
      remote-address:
          0.0.0.0:*
      send-q:
          0
      user:
          70
    |_
      ----------
      inode:
          32782
      local-address:
          127.0.0.1:323
      program:
          983/chronyd
      proto:
          udp
      recv-q:
          0
      remote-address:
          0.0.0.0:*
      send-q:
          0
      user:
          0
    |_
      ----------
      inode:
          0
      local-address:
          192.168.197.131:54624
      program:
          9162183
      proto:
          udp
      recv-q:
          0
      remote-address:
          192.168.197.2:53
      send-q:
          0
      user:
          ESTABLISHED
    |_
      ----------
      inode:
          3871
      local-address:
          :::111
      program:
          1/systemd
      proto:
          udp6
      recv-q:
          0
      remote-address:
          :::*
      send-q:
          0
      user:
          0
    |_
      ----------
      inode:
          33858
      local-address:
          :::60540
      program:
          976/avahi-daemon:
      proto:
          udp6
      recv-q:
          0
      remote-address:
          :::*
      send-q:
          0
      user:
          70
    |_
      ----------
      inode:
          33856
      local-address:
          :::5353
      program:
          976/avahi-daemon:
      proto:
          udp6
      recv-q:
          0
      remote-address:
          :::*
      send-q:
          0
      user:
          70
    |_
      ----------
      inode:
          32783
      local-address:
          ::1:323
      program:
          983/chronyd
      proto:
          udp6
      recv-q:
          0
      remote-address:
          :::*
      send-q:
          0
      user:
          0
minion:
    |_
      ----------
      inode:
          871039
      local-address:
          0.0.0.0:873
      program:
          152334/rsync
      proto:
          tcp
      recv-q:
          0
      remote-address:
          0.0.0.0:*
      send-q:
          0
      state:
          LISTEN
      user:
          0
    |_
      ----------
      inode:
          22801
      local-address:
          0.0.0.0:111
      program:
          1/systemd
      proto:
          tcp
      recv-q:
          0
      remote-address:
          0.0.0.0:*
      send-q:
          0
      state:
          LISTEN
      user:
          0
    |_
      ----------
      inode:
          37561
      local-address:
          192.168.122.1:53
      program:
          1896/dnsmasq
      proto:
          tcp
      recv-q:
          0
      remote-address:
          0.0.0.0:*
      send-q:
          0
      state:
          LISTEN
      user:
          0
    |_
      ----------
      inode:
          32905
      local-address:
          0.0.0.0:22
      program:
          1086/sshd
      proto:
          tcp
      recv-q:
          0
      remote-address:
          0.0.0.0:*
      send-q:
          0
      state:
          LISTEN
      user:
          0
    |_
      ----------
      inode:
          31286
      local-address:
          127.0.0.1:631
      program:
          1085/cupsd
      proto:
          tcp
      recv-q:
          0
      remote-address:
          0.0.0.0:*
      send-q:
          0
      state:
          LISTEN
      user:
          0
    |_
      ----------
      inode:
          20321563
      local-address:
          192.168.197.128:22
      program:
          2733111/sshd:
      proto:
          tcp
      recv-q:
          0
      remote-address:
          192.168.197.1:51788
      send-q:
          0
      state:
          ESTABLISHED
      user:
          0
    |_
      ----------
      inode:
          19928383
      local-address:
          192.168.197.128:49502
      program:
          1205181/python3.6
      proto:
          tcp
      recv-q:
          0
      remote-address:
          192.168.197.131:4505
      send-q:
          0
      state:
          ESTABLISHED
      user:
          0
    |_
      ----------
      inode:
          0
      local-address:
          192.168.197.128:52026
      program:
          -
      proto:
          tcp
      recv-q:
          0
      remote-address:
          192.168.197.131:4506
      send-q:
          0
      state:
          TIME_WAIT
      user:
          0
    |_
      ----------
      inode:
          20322269
      local-address:
          192.168.197.128:22
      program:
          2733125/sshd:
      proto:
          tcp
      recv-q:
          0
      remote-address:
          192.168.197.1:51789
      send-q:
          0
      state:
          ESTABLISHED
      user:
          0
    |_
      ----------
      inode:
          2396141
      local-address:
          127.0.0.1:8005
      program:
          436311/java
      proto:
          tcp6
      recv-q:
          0
      remote-address:
          :::*
      send-q:
          0
      state:
          LISTEN
      user:
          0
    |_
      ----------
      inode:
          871040
      local-address:
          :::873
      program:
          152334/rsync
      proto:
          tcp6
      recv-q:
          
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值