arangosh可以用--javascript.execute支持shebang

时间:2016-03-17 08:55:18

标签: arangodb arangojs

arangosh似乎不喜欢在装有--javascript.execute

的javascript文件中使用shebangs

我正在为我们的arangodb制作系统管理员工具 - 具有root密码的人将在东西中断时使用这些工具!不会要求许可的工具,会绕过arangodb的权限限制。我使用unix socket。

到目前为止,我已将/opt/arango-tools/bin/arangojs用于:

#!/bin/bash
SOC=/var/lib/arangodb/unrestricted-endpoint
if [ -r $SOC ] && [ -w $SOC ]
then
  /usr/bin/arangosh --server.endpoint unix://$SOC --javascript.execute "$@"
else
  echo Needs R/W to $SOC, consider running with sudo 
  exit 1
fi

然后使用简单的帮助工具/opt/arango-tools/bin/list-users.js

#!/opt/arango-tools/bin/arangojs
var users = require("org/arangodb/users");
db._listDatabases().forEach(function(db_name) {
  console.log(db_name);
  db._useDatabase(db_name);
  users.all().forEach(function(row) {
    console.log("  " + row.user + 
      (row.active ? ' (active)':' (disabled)'));
  });
});

但是当它运行时就像:

mogul@guldager:~$ sudo /opt/arango-tools/bin/list-arangodb.js
2016-03-17T08:46:46Z [11876] ERROR JavaScript exception in file '/opt/arango-tools/bin/list-arangodb.js' at 1,1: SyntaxError: Unexpected token ILLEGAL
2016-03-17T08:46:46Z [11876] ERROR !#!/opt/arango-tools/bin/arangojs
2016-03-17T08:46:46Z [11876] ERROR !^
mogul@guldager:~$ 

显然,以#!开头的行不是有效的javascript。

建议/解决方法/想法 - 有人吗?

1 个答案:

答案 0 :(得分:1)

目前无法实现。

然而,我们喜欢这个想法,ArangoDB 2.8.6 onwarnds将能够做到这样的事情:

#!/usr/bin/arangosh --javascript.execute 
print('hello world')

它将为舒尔提供常规环境,因此您可以使用

做任何事情
/usr/bin/arangosh --javascript.execute /tmp/test.js

以前可以做。