如何禁用所有systemd网络配置功能并运行网络初始化Shell脚本?

时间:2019-07-13 13:17:03

标签: networking systemd

我的网络初始化脚本比

  1. 运行wpa_supplicant
  2. 运行dhcpcd

configureWifi.sh

pkill -9 wpa_supplicant
pkill -9 dhcpcd

wpa_supplicant -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf -B
dhcpcd wlan0

我想禁用所有系统的“网络配置”功能 因为它们无法正常工作,并使我的系统在启动时挂起。 我只想启动shell脚本。

我的systemd单元描述文件如下:

/lib/systemd/system/goodwifi.service

[Unit]
description=Good wifi service, initializes wifi without networkmanger
[Service]
ExecStart=/root/configureWifi.sh
type=oneshot

[Install]
WantedBy=network.target
# systemctl enable goodwifi

然后重新启动wifi后未配置。 当我手动运行此脚本时,它可以100%工作。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

您的服务可能在启动顺序中的错误时间运行。尝试至少添加AfterBefore属性以进行配置。
我的建议是,让所有网络启动,然后启动您的服务。
这是从/etc/systemd/system/network.service的OpenSuse框中获取的

[Unit]
Description=Network Manager
Documentation=man:NetworkManager(8)
Wants=remote-fs.target network.target
After=network-pre.target dbus.service
Before=network.target

此外,最好将脚本放在标准PATH目录中,也许是/usr/local/sbin

ExecStart=/usr/local/sbin/configureWifi.sh

使用以下命令检查服务启动顺序

systemctl list-dependencies network.service

network.service
● ├─dbus.socket
● ├─system.slice
● ├─network.target
● ├─remote-fs.target
● │ ├─iscsi.service
● │ └─remote-fs-pre.target
● └─sysinit.target
●   ├─detect-part-label-duplicates.service
●   ├─dev-hugepages.mount

journalctl -b0应该告诉您脚本的运行方式。