Tôi có một tập lệnh bash cần chạy với quyền root để hoàn thành một nhiệm vụ trong trường hợp này là làm cho trình xác thực chụp nhanh chuỗi khối Helium.
Tôi đã chỉnh sửa tệp /etc/sudoers để cho phép tôi chạy tập lệnh này với quyền root. Điều này hoạt động tốt.
useraccount ALL=(ALL:ALL) NOPASSWD:/home/useraccount/validator_data/snapshotmaker.sh
Lệnh trong kịch bản như sau:
sudo docker exec trình xác thực chụp nhanh công cụ khai thác /var/data/$dtt
sau đó, lệnh tạo một tệp như thế này '30-10-2021T233752.bin'.
Bước tiếp theo của tôi là lấy tệp này và sao chép nó vào IPFS để tôi có thể chia sẻ nó. Lệnh để làm điều này là:
tệp ipfs cp /ipfs/$(ipfs add -Q $localfile) $ip
Hiện tại tôi nhận được lỗi sau:
Lỗi: không tìm thấy repo IPFS trong /root/.ipfs. vui lòng chạy: 'ipfs init'
Điều này là do nó đang cố chạy nó với quyền root khi cấu hình nằm trong tài khoản người dùng của tôi.
Tôi đã cố gắng chuyển đổi tài khoản ở giữa tập lệnh nhưng dường như điều đó đã giết chết nó.
Vì vậy, câu hỏi của tôi là làm thế nào để chạy lệnh IPFS với tư cách là người dùng ban đầu của tôi từ bên trong tập lệnh gốc.
Tập lệnh Bash của tôi:
#!/bin/bash
dt=$(ngày '+%d-%m-%YT%H%M%S');
dtt="${dt}.bin"
a='/var/data/'
c="${a}${dt}.bin"
tiếng vang "${c}"
sudo docker exec trình xác thực chụp nhanh công cụ khai thác /var/data/$dtt
localfile="/home/useraccount/validator_data/${dt}.bin"
tiếng vang "LocalFile: ${localfile}"
ip=" /Helium/Snapshots/2021/${dt}.bin"
tiếng vang "Vị trí IPFS: ${ip}"
ngủ 2
nếu [ -f "$localfile" ]; sau đó
echo "$localfile tồn tại."
sudo chown tài khoản người dùng $localfile
tôi là ai
su - tài khoản người dùng
tôi là ai
tệp ipfs cp /ipfs/$(ipfs add -Q $localfile) $ip
#ipfs files cp /ipfs/$(ipfs add -Q <local-file>) "/Helium/Snapshots/2021/<dest-name>"
khác
tiếng vang "$localfile không tồn tại."
fi
Đầu ra như sau:
/var/data/31-10-2021T005728.bin
Vâng
LocalFile: /home/useraccount/validator_data/31-10-2021T005728.bin
Vị trí IPFS: /Helium/Snapshots/2021/31-10-2021T005728.bin
/home/useraccount/validator_data/31-10-2021T005728.bin tồn tại.
nguồn gốc
Và rồi nó chết.
Nếu tôi loại bỏ su
thì tôi nhận được vấn đề gốc như đã đề cập ở đầu bài đăng này.
Hy vọng ai đó có thể giúp đỡ.