Bine, a trecut ceva timp, deși în sfârșit am avut timp să mă așez și să-mi scriu soluția. A fost prima dată când am scris un script bash, așa că a fost interesant.
Am ajuns să folosesc o combinație de 3 scripturi, dintre care 2 au primit permisiuni de root în fișierul sudoers. Poate că există o modalitate mai bună de a face acest lucru; cu toate acestea, am pus pur și simplu calea completă către script.
sudo visudo
Apoi sub fila #includedir /etc/sudoers.d
userName ALL=NOPASSWD PATH/AutoStartMiner.sh, PATH/TeamRedMiner_Config.sh, Path/teamredminer
Acest lucru ar pregăti scena pentru ca cele 3 scripturi să funcționeze unul după altul fără probleme.
Pentru a porni AutoStartMiner.sh într-o fereastră de terminal, am folosit emulatorul gnome-terminal. Pentru cei care implementează ceva similar, va trebui să instalați emulatorul prin:
sudo apt install gnome-terminal
Apoi am folosit centrul de configurare LXQT și am navigat la setările sesiunii. În setările de sesiune am setat scriptul StartTerminalASM.sh să se execute după ce s-a încărcat tava de sistem. Acest lucru a fost realizat prin apăsarea adăugării, dând un nume funcției de pornire automată, lipirea întregii căi către script, inclusiv scriptul în sine, și apoi făcând clic pe caseta care spune încărcare după bara de sistem. Este important de reținut că acest prim script nu trebuie să ruleze cu privilegii ridicate, așa că această metodă funcționează. Funcția de pornire automată a LXQT nu rulează automat scripturi care necesită privilegii ridicate.
Iată conținutul primului script: StartTerminalASM.sh
#!/bin/bash
gnome-terminal --command="bash -c 'sudo /home/userName/Scripts/AutoStartMiner.sh; $SHELL'"
Acest script pur și simplu pornește AutoStartMiner.sh într-un terminal gnome. Deoarece am adăugat mai devreme acest script în fișierul sudoers, comanda sudo se execută fără o solicitare de parolă.
Iată al doilea script: AutoStartMiner.sh
#!/bin/bash
# Solicitați utilizatorului informații.
echo „Minerul va începe în 60 de secunde”.
echo "Apăsați s + enter pentru a opri procesul și a relua funcționarea normală."
# Delare variabile.
input="a"
lasă secunde=60
#Așteptați intrarea utilizatorului și numărătoarea inversă.
while [ $secunde -gt 0 ]; do
printf „\r.........”$secunde
citiți -s -t 1 intrare
lasă „secunde-=1”
dacă [ "$input" = "s" ] || [ "$input" = "S" ]; atunci
pauză
fi
Terminat
ecou
#Inițiază selecția utilizatorului
dacă [ "$input" = "s" ] || [ "$input" = "S" ]; atunci
echo „Reluarea funcționării normale”.
somn 2
altfel
echo „Pornirea minerului”.
somn 2
sudo /home/userName/Documents/Crypto/Miners/TeamRedMiner/teamredminer-v0.8.4-linux/TeamRedMiner_Config.sh
fi
Deci, acest lucru funcționează în esență așa cum am descris în întrebarea inițială. Singura problemă pe care o are este că atunci când timpul scade sub 10 secunde, dintr-un motiv oarecare, apare un 0 pe locul 1 și numerele numără invers pe locul 10 (de exemplu, 10, 90, 80, 70, ... etc. ). Probabil ceva ce nu înțeleg pe deplin despre printf
declarația pe care am făcut-o. În mod similar, mai sus, sudo
comanda aici nu cere o parolă din cauza liniei create în sudoers.
În cele din urmă, execută un al treilea script: TeamRedMiner_Config.sh
Acest script stabilește pur și simplu parametrii pentru ca minerul să ruleze. De asemenea, execută minerul cu sudo
, de aceea adăugăm o a treia comandă la sudoers pentru a ne asigura că nu este necesară nicio solicitare pentru a porni minerul în sine.
Deci, dacă utilizatorul nu solicită sistemului să oprească pornirea minerului, minerul va executa fără nicio introducere. Acest lucru este extrem de util, deoarece mă scutește de o mulțime de dureri de cap dacă nucleul se blochează. Pur și simplu apăs pe butonul de pornire și boom, minerul rulează un minut mai târziu. Dacă aș vrea cu adevărat să-l automatizez, aș putea face un mic servo pentru a apăsa butonul sau a seta wake pe lan.
Acestea fiind spuse, este vorba despre cea mai recentă problemă. După actualizarea la Linux kernel 5.11.0-27-generic, adaptorul meu wireless refuză să se conecteze la rețeaua mea, deși cel puțin este recunoscut de sistem.
Mulțumesc tuturor pentru contribuție și sper că acest lucru îi va ajuta într-o zi pe alți începători ca mine.