Am un script bash care trebuie să ruleze ca root pentru a îndeplini o sarcină, în acest caz, este de a face validatorul să ia un instantaneu al blockchain-ului Helium.
Am editat fișierul /etc/sudoers pentru a-mi permite să rulez acest script ca root. Acest lucru funcționează bine.
useraccount ALL=(ALL:ALL) NOPASSWD:/home/useraccount/validator_data/snapshotmaker.sh
Comanda din script este următoarea:
sudo docker exec validator miner snapshot take /var/data/$dtt
după aceasta, comanda generează un fișier ca acesta '30-10-2021T233752.bin'.
Următorul meu pas este să iau acest fișier și să-l copiez în IPFS, astfel încât să îl pot partaja. Comanda pentru a face acest lucru este:
fisiere ipfs cp /ipfs/$(ipfs adauga -Q $fisier local) $ip
Momentan imi apare urmatoarea eroare:
Eroare: nu a fost găsit niciun repo IPFS în /root/.ipfs. rulați: „ipfs init”
Acest lucru se datorează faptului că încearcă să-l ruleze ca root atunci când configurația este în contul meu de utilizator.
Am încercat să schimb conturile în mijlocul scriptului, dar se pare că îl omoara.
Deci întrebarea mea este cum să rulez comanda IPFS ca utilizator inițial din scriptul rădăcină.
My Bash Script:
#!/bin/bash
dt=$(data '+%d-%m-%YT%H%M%S');
dtt="${dt}.bin"
a='/var/data/'
c="${a}${dt}.bin"
ecou „${c}”
sudo docker exec validator miner snapshot take /var/data/$dtt
localfile="/home/useraccount/validator_data/${dt}.bin"
echo „LocalFile: ${localfile}”
ip=" /Helium/Snapshots/2021/${dt}.bin"
echo „Locație IPFS: ${ip}”
somn 2
if [ -f "$localfile" ]; atunci
echo "$localfile există."
sudo chown useraccount $localfile
cine sunt
su - useraccount
cine sunt
fisiere ipfs cp /ipfs/$(ipfs adauga -Q $fisier local) $ip
#ipfs fișiere cp /ipfs/$(ipfs add -Q <local-file>) „/Helium/Snapshots/2021/<dest-name>”
altfel
echo "$localfile nu există."
fi
Ieșirea este după cum urmează:
/var/data/31-10-2021T005728.bin
Bine
LocalFile: /home/useraccount/validator_data/31-10-2021T005728.bin
Locație IPFS: /Helium/Snapshots/2021/31-10-2021T005728.bin
/home/useraccount/validator_data/31-10-2021T005728.bin există.
rădăcină
Și apoi moare.
Dacă scot su
atunci primesc problema rădăcină așa cum este menționat în partea de sus a acestei postări.
În speranța că cineva poate ajuta.