Você está usando bash
recursos, mas deixando systemd
executar seu script com /bin/sh
. Coloque um #!/bin/bash
no começo ou reescreva seu script para usar somente sh
.
Eu tenho o script a seguir salvo / lib / systemd / system-sleep / directory, para ser executado após cada ativação da suspensão:
#!/bin/bash
if [ "$1" == "post" ]; then
sleep 5
cni=$(ip link | grep "state UP" | grep --only-matching --perl-regexp '(?<=:).*(?=:)' | tr --delete ' ')
#cni=connected(UP) network interface(s)
if [ -z "$cni" ] && [ $(nmcli radio wifi) == "disabled" ]; then
#export DISPLAY=:0
#su -c - my_user nmcli radio wifi on
nmcli radio wifi on
fi
fi
Eu testei, loguei como usuário regular, então no terminal su - root e rodei com o switch "post" ele funciona como esperado e quando não há adaptador de rede conectado e wifi está inativo, ele habilita o WIFI. No entanto, não está funcionando quando eu realmente suspendo e acordo meu laptop. Eu estava lendo que talvez eu tenha que definir a variável DISPLAY e executá-la como usuário regular, mas ainda assim não ajudou. Alguma idéia do que estou perdendo aqui?
EDIT - adicionado shebang no início do script, esqueci de escrevê-lo aqui, mas é o meu script
Ubuntu 17.04 kernel 4.10.0-21-genérico
Você está usando bash
recursos, mas deixando systemd
executar seu script com /bin/sh
. Coloque um #!/bin/bash
no começo ou reescreva seu script para usar somente sh
.