问题标签 [erlang-escript]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1027 浏览

erlang - 使用 SSL 分发运行 Erlang Escript 文件

我有一个小的 escript 文件,它连接到一个节点并执行一些 rpc 调用和一些东西......

它适用于短名称或长名称,但依赖于分布式 Erlang 的标准 http 通信。

我想使用它,但使用 https/SSL 进行分发。

要使用 SSL 启动“普通”Erlang 系统,您必须传入各种标志来告诉 Erlang 以这种方式运行,如文档所示:

这将默认分发机制 ( inet_tcp_dist) 替换为 ssl机制 ( inet_ssl_dist)。

escript将 erlang 文件作为 shell 脚本文件运行。

我的问题是:

  • 是否有可能获得运行 escript 以使用安全分发机制而不是默认机制的 Erlang“环境”?
  • 如果是这样,我该怎么做?
0 投票
3 回答
429 浏览

cron - escript cron 蓝调

我有一个从命令行运行良好的 escript 文件,即:

它意味着对 cron 友好,并且所有路径都是明确的,但是当我运行它时,它无法编译说有bad attributes.

有问题的坏属性是宏定义:

答案

感谢 Geoff Ready 的建议,我通过打印出哪个版本的 Erlang 来调查正在运行的 Erlang,init:script_id()它打印出类似的字符串,{"OPT APN 181 O1", "R13B"}并且果然命令行和 cron 版本正在选择不同的版本。

该脚本有一个初始行:

操作系统正在为我“寻找”Erlang。cron 的不同环境变量意味着正在选择不同的 erlang(Geoff 的第一个答案,我有点知道但看不出它会如何影响事情)。

然后解决方案是强制版本具有以下起始行:

后记

还有一个不同的 Ubuntuapt-get安装了早期版本的 Erlang(在与源安装不同的位置)和一个错误的 64 位安装......

cron 环境只是不断退回到较旧且更晦涩的安装,一直失败:(

0 投票
1 回答
2274 浏览

erlang - Erlang 脚本参数

我真的不明白命令行参数如何与 escripts 一起使用。从手册页中,我了解到参数作为字符串列表传递给 main/1。如何解析传递给 main 的参数?

考虑以下:

一个简单的测试,只需一个参数,一切看起来都很好。

如果我传入多个参数怎么办?

那不是我想要的。我尝试在空格字符上拆分字符串:

产量长度:1

0 投票
1 回答
751 浏览

erlang - 使用erlang escript的ejabberd extauth

我在我的一个项目中使用 ejabberd,该项目本身是用 erlang 实现的。我有兴趣获得对身份验证流程的访问权限,这样我就可以集成我的用户数据库,而无需在 ejabberd 中单独注册它们。

我已经得到了这里描述的大部分内容: https ://git.process-one.net/ejabberd/mainline/blobs/raw/2.1.x/doc/dev.html#htoc8

但是,看似 ejabberd 从未收到我的 escript 的响应。下面是负责发送响应的部分代码:

从我的日志中我最终发送:

这与我以前在 PHP 中所做的完全相似:

我不确定我在哪里搞砸了。

如果有更好的方法来集成我的用户数据库,我也很感兴趣,因为我的应用程序本身就在 erlang 中,我可能想利用 erlang 消息传递而不是在 extauth 中读取/写入 stdin/stdout

0 投票
1 回答
2226 浏览

erlang - Escript:设置相对于脚本目录的代码路径

当我尝试使用 -pz 像这样在 escript 中设置相对代码路径时

该路径是相对于我从中运行 escript 的目录进行解释的,这使得它对于设置相对于脚本位置的路径毫无用处。

我当前的“解决方法”是使用令人讨厌的绝对路径,因为所有这些都是存储库的一部分,我不希望它依赖于位置。

那么如何设置相对于 escript 所在目录的代码路径呢?

0 投票
2 回答
1209 浏览

erlang - 如何启动 Erlang OTP 应用程序并允许将命令行参数传递给应用程序的根主管?

Quick 1 liner:如何启动 OTP 应用程序并将命令行参数传递给它?

我希望能够以通用的“UNIX”方式启动 OTP 应用程序,能够传递由 getopts 解析的命令行参数。所以,我有一个 erlang escript,它使用getopt库来处理命令行参数的解析。

shino 的回答让我走上了正确的道路:

  1. 我有我的 escript 做 getopts 解析
  2. 然后,escript 使用 application:load/1 将应用程序描述加载到内存中
  3. 然后我使用 application:set_env/3 来存储 CLI args
  4. 现在,使用 application:start/2 启动应用程序
  5. 应用程序启动后,可以通过 application:get_env/2 访问参数
0 投票
1 回答
3474 浏览

erlang - 为什么escript不能运行?

rebar 在当前目录中。

我正在使用 FreeBSD 9.0。

谢谢!

0 投票
1 回答
1153 浏览

erlang - 使用 Erlang etop 将信息转储到文件中?

使用 Erlang etop 将 Erlang 程序信息转储到文件的命令行选项是什么?如果这不能在命令行中完成,可以在 escript 中完成吗?

0 投票
1 回答
178 浏览

erlang - Can't send anything to spawned Erlang process

I have the following Erlang code:

I run this with: excript rmq.erl

This code doesn't work. Looks like spawn doesn't work.

Rest of my code works, function send and validate works correctly if I run it from main (I've commented its). What I'm doing wrong?

Sorry, maybe it's a dumb question but I'm a beginner with erlang. I've tried search answer in internet and books and I failed...

0 投票
0 回答
356 浏览

erlang - Erlang beam_lib 块坏了?

我试图反编译 .beam 文件(从长生不老药代码编译)

我用了这个脚本

其中生成了一个文件。但是在再次编译此代码时,我在“-spec”注释上遇到错误

代码不变。它与新的 Erlang 版本有关还是我做错了什么?

Erlang 规范错误