外部用户呼叫无法运行IPFS呼叫

时间:2017-05-05 10:52:34

标签: linux permissions slurm ipfs

我已遵循本指南:Could SLURM trigger a script(implemented by the frontend-SLURM user) when any job is completed?当工作盯着slurm时,它会触发我已实施的脚本。

我有以下脚本。它可由SlurmUser读取和执行。在内部脚本中,我想调用ipfs并返回生成的哈希值。

hello.sh

#!/bin/bash    
export IPFS_PATH="path/to/ipfs_repo/.ipfs"
x=$(/usr/local/bin/ipfs add -r path/to/added)

slurm.conf上更新了这一行。

MailProg=/path/to/my_script.sh

因此,当我通过SLURM运行作业时,可以触发此脚本。但它无法运行ipfs add -r path/to/added命令,因此无法返回有效的哈希值。 IPFS应将当前路径上的文件写入.ipfs文件夹并返回哈希值。

我做了:

sudo chmod +x /usr/local/bin/ipfs
sudo chmod +x path/to/added/*

netlab@ebloc:~/.ipfs$ ls -ls
total 16
4 drwxr-xr-x 78 netlab netlab 4096 May  6 12:02 blocks
4 -rwxr-xr-x  1 netlab netlab 3705 May  5 12:14 config
4 drwxr-xr-x  2 netlab netlab 4096 May  6 12:02 datastore
4 -rwxr-xr-x  1 netlab netlab    2 May  5 12:14 version

感谢您宝贵的时间和帮助。

1 个答案:

答案 0 :(得分:2)

尝试在 hello.sh 中使用 ipfs 二进制文件的完整路径,因为 PATH 环境变量可能缺少%GOPATH%/ bin目录。

此外,IPFS从 HOME 环境变量中获取其存储库的路径。如果未设置 HOME 环境变量或指向没有初始化IPFS存储库的主目录,则它将找不到初始化的存储库,并且将退出并显示错误。要覆盖派生路径,请在调用ipfs二进制文件之前设置 IPFS_PATH 环境变量: export IPFS_PATH = / path / to / ipfsrepo