Desativar WiFi em cada inicialização usando o serviço systemd

1

No Ubuntu 16.04, eu não gosto que o WiFi seja ativado automaticamente em startups do sistema operacional. Inspirado por Como pode Eu mantenho o rádio de uma placa wireless desligado por padrão? , Eu escrevo um serviço Wi-FiWiFi como

[Unit]
Description=Disable Wi-Fi on startup
Before=NetworkManager.service
[Service]
Type=oneshot
ExecStart=/etc/default/silenceWiFi
[Install]
WantedBy=multi-user.target

com / etc / default / silenceWiFi apenas as seguintes linhas simples

#!/bin/sh
/bin/sed -i -re "s/^(WirelessEnabled=).*\$/false/" /var/lib/NetworkManager/NetworkManager.state

Funciona como esperado.

No entanto, se eu alterar a linha ExecStart em silenceWiFi.service para ser

ExecStart=/bin/sed -i -re '\"s/^(WirelessEnabled=).*\$/\1false/\"' /var/lib/NetworkManager/NetworkManager.state

sempre há erros com o serviço

 sudo systemctl status silenceWiFi.service 

produzirá as seguintes mensagens

 ● silenceWiFi.service - Disable Wi-Fi on startup
     Loaded: loaded (/lib/systemd/system/silenceWiFi.service; enabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Fri 2016-08-26 16:10:46 CST; 10s ago
     Process: 20423 ExecStart=/bin/sed -i -re "s/^(WirelessEnabled=).*\$/false/" /var/lib/NetworkManager/NetworkManager.state (code=exited, Main PID: 20423 (code=exited, status=1/FAILURE)
  Aug 26 16:10:46 Y12 systemd[1]: Starting Disable Wi-Fi on startup...
  Aug 26 16:10:46 Y12 sed[20423]: /bin/sed: -e expression #1, char 1: unknown command: '"'
  Aug 26 16:10:46 Y12 systemd[1]: silenceWiFi.service: Main process exited, code=exited, status=1/FAILURE
  Aug 26 16:10:46 Y12 systemd[1]: Failed to start Disable Wi-Fi on startup.
  Aug 26 16:10:46 Y12 systemd[1]: silenceWiFi.service: Unit entered failed state.
  Aug 26 16:10:46 Y12  systemd[1]: silenceWiFi.service: Failed with result 'exit-code'.

É possível colocar o sed na linha ExecStart, que funciona sem a necessidade de um shell script (digamos, sem a ajuda de / etc / default / silenceWiFi).

    
por Chen Deng-Ta 26.08.2016 / 11:07

1 resposta

0

Sim, apenas usando a seguinte linha

ExecStart=/bin/sed s/^WirelessEnabled=true/WirelessEnabled=false/ -i /var/lib/NetworkManager/NetworkManager.state

usando a linha cmd em solutione "Modern" , o systemd não reclama mais.

sudo systemctl status silenceWiFi.service 

você verá

● silenceWiFi.service - Disable Wi-Fi on startup
  Loaded: loaded (/lib/systemd/system/silenceWiFi.service; enabled; vendor preset: enabled)
  Active: inactive (dead) since Fri 2016-08-26 17:29:12 CST; 4min 31s ago
  Process: 2506 ExecStart=/bin/sed s/^WirelessEnabled=true/WirelessEnabled=false/ -i /var/lib/NetworkManager/NetworkManager.state (code=ex
  Main PID: 2506 (code=exited, status=0/SUCCESS)

Aug 26 17:29:12 Y12 systemd[1]: Starting Disable Wi-Fi on startup...
Aug 26 17:29:12 Y12 systemd[1]: Started Disable Wi-Fi on startup.
    
por Chen Deng-Ta 26.08.2016 / 11:39