2

arangoshロードされたjavascriptファイルにシバンがあるのが好きではないようです--javascript.execute

私は arangodb 用の sysadmin ツールを作成しています。これは、root パスワードを持つ人が何かが壊れたときに使用するツールです! arangodb の許可制限をバイパスする、許可を求めないツール。そのためにUNIXソケットを使用します。

これまでのところ、次のもので作成/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 ではありません。

提案/回避策/アイデア - 誰か?

4

1 に答える 1

1

現在、それは不可能です。

しかし、私たちはこのアイデアを気に入っており、ArangoDB 2.8.6 以降では次のようなことができるようになります。

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

通常の環境を確実にソースするので、これで何でもできます

/usr/bin/arangosh --javascript.execute /tmp/test.js

前にできました。

于 2016-03-19T14:04:45.850 に答える