2012-04-01 9 views
0

우리는 erlang 프로그램 (ejabberd)을 실행 중입니다. 때로는 실행중인 erlang 프로그램에 erl 쉘을 연결하여 상태 점검을해야 할 때가 있습니다.erl 명령을 전달 하시겠습니까?

나는이 모든 것을 스크립트하려고하는데, erl -sname r -remsh ....을 입력 한 다음 erlang 셸에서 내 명령을 입력하면 내 bash 셸에서 해당 명령을 직접 실행하여 결과를 얻는 방법을 찾고 있습니다. 이것이 가능한가?

#!/usr/bin/env escript 
%%! -sname r -setcookie `cat ~ejabberd/.erlang.cookie` 

main([]) -> 
    Res = rpc:call([email protected],mnesia,info,[]), 
    io:format("~p~n",[Res]). 

문제는 내가이 내가 erl에 연결하는 데 사용하는 동일한 PARAMS가에도 불구하고 "노드 아래로"오류를 얻을 수 있다는 것입니다 : erl -sname r -remsh [email protected] -setcookie `cat ~ejabberd/.erlang.cookie`

는 Odobenus의 대답 후, 나는이 작은 스크립트를 썼습니다

답변

1

당신이 그 목적의 http://www.erlang.org/doc/man/escript.html

종류의 escript을 쓸 수

(예를 들어 tst.erl에 대한)

./tst.erl `cat verythatfile` 
+0

불행히도, 나는 {badrpc, nodeown}을 얻습니다. 것은 내가 erl과 연결할 때 thaat이다, 나는 escsh와 함께 할 수 없을 것 같은 remsh를 사용한다. 어떤 생각? –

+0

nodedown은 서버에서 escript가 표시되지 않음을 의미합니다. 같은 쿠키를 설정 했습니까? –

+0

Dang, 내'cat ~ ejabberd/.erlang.cookie'는 thge %% line에서 실패합니다. 그것을 수동으로 입력하면 문제가 해결됩니다 ... 그러나 그것을 피하는 것이 좋습니다. 어떤 단서? –

0

문제 bash는 스크립트에서 호출이 -sname 매개 변수입니다. 전체 이름 -name node @ host를 사용하면 모든 것이 작동합니다.