У меня есть скрипт bash, который нужно запустить от имени пользователя root, чтобы выполнить задачу, в данном случае это заставить валидатор сделать снимок блокчейна Helium.
Я отредактировал файл /etc/sudoers, чтобы запустить этот скрипт от имени пользователя root. Это прекрасно работает.
учетная запись пользователя ALL=(ALL:ALL) NOPASSWD:/home/useraccount/validator_data/snapshotmaker.sh
Команда в скрипте выглядит следующим образом:
sudo docker exec validator miner snapshot взять /var/data/$dtt
после этого команда генерирует такой файл '30-10-2021T233752.bin'.
Мой следующий шаг — взять этот файл и скопировать его в IPFS, чтобы я мог поделиться им. Команда для этого:
файлы ipfs cp /ipfs/$(ipfs добавить -Q $localfile) $ip
На данный момент я получаю следующую ошибку:
Ошибка: репозиторий IPFS не найден в /root/.ipfs. запустите: 'ipfs init'
Это потому, что он пытается запустить его как root, когда конфигурация находится в моей учетной записи пользователя.
Я пытался переключать учетные записи в середине сценария, но, похоже, это его убивает.
Итак, мой вопрос заключается в том, как запустить команду IPFS от имени моего исходного пользователя из корневого сценария.
Мой Баш-скрипт:
#!/бин/баш
dt=$(дата '+%d-%m-%YT%H%M%S');
dtt="${dt}.bin"
а='/вар/данные/'
c="${a}${dt}.bin"
эхо "${с}"
sudo docker exec validator miner snapshot взять /var/data/$dtt
localfile="/home/useraccount/validator_data/${dt}.bin"
echo "Локальный файл: ${localfile}"
ip=" /Helium/Snapshots/2021/${dt}.bin"
echo "Расположение IPFS: ${ip}"
спать 2
если [-f "$localfile"]; тогда
echo "$localfile существует."
sudo chown useraccount $localfile
кто я
су - учетная запись пользователя
кто я
файлы ipfs cp /ipfs/$(ipfs добавить -Q $localfile) $ip
#ipfs files cp /ipfs/$(ipfs add -Q <локальный-файл>) "/Helium/Snapshots/2021/<имя-назначения>"
еще
echo "$localfile не существует."
фи
Результат выглядит следующим образом:
/var/данные/31-10-2021T005728.bin
хорошо
Локальный файл: /home/useraccount/validator_data/31-10-2021T005728.bin
Расположение IPFS: /Helium/Snapshots/2021/31-10-2021T005728.bin
/home/useraccount/validator_data/31-10-2021T005728.bin существует.
корень
А потом умирает.
Если я удалю су
строка, то я получаю корневую проблему, как указано в верхней части этого поста.
Надеясь, что кто-то может помочь.