Versiunea Ubuntu: Ubuntu 20.04.2.0 LTS
Shell: bash
Am un script shell care va fi executat de rădăcină din jobul cron de la root.
Dar, chiar și atunci când execut scriptul manual, greșește spunând următoarele
# ./fix_wifi.sh
./fix_wifi.sh: linia 17:: comanda nu a fost găsită
./fix_wifi.sh: linia 18:: comanda nu a fost găsită
Liniile 17 și 18 sunt cele cu ecou
și repornirea serviciului de gestionare a rețelei
Furnizarea numelor de căi absolute (/usr/bin, /usr/sbin) pentru aceste binare în script nu a ajutat.
Deci, aș dori să obțin fișierele de pornire la începutul scriptului, astfel încât scriptul să fie conștient de variabila PATH (și alte variabile relevante)
Dar, pentru utilizatorul root în Ubuntu, ce fișier de pornire ar trebui să surprind? Pot vedea .bashrc
și .profil
fișierele din directorul principal al root-ului /rădăcină
.
#!/bin/bash
# Scris de xyz
# Trebuie să fie rulat ca root
dacă [[ $EUID -ne 0 ]]; atunci
  echo „Acest script trebuie rulat ca root”
  ieșirea 1
fi
ConnectionStatus=$(conectivitate la rețea nmcli)
#echo „$ConnectionStatus”
if [ "$ConnectionStatus" != "full" ]
atunci
  /usr/bin/echo „Wi-ul a fost deconectat la „ `date` ” prin urmare repornind managerul de rețea...” | /usr/bin/tee -a /home/john/scripts/wifi_diagnostics.log
  Reporniți /usr/sbin/service network-manager
fi
Notă:
Am uitat să ofer calea absolută pentru Data
comandă în linia 17. Dar, nu este foarte relevantă aici, deoarece linia 18 conține repornirea serviciului de gestionare a rețelei
încă a fost eroată, în ciuda faptului că a furnizat calea completă (/usr/sbin)