emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [O] Executing org shell blocks on remote machine over ssh


From: David Bjergaard
Subject: Re: [O] Executing org shell blocks on remote machine over ssh
Date: Tue, 18 Nov 2014 13:23:09 -0500
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.4 (gnu/linux)

Ista Zahn <address@hidden> writes:

> On Tue, Nov 18, 2014 at 10:43 AM, Brett Viren <address@hidden> wrote:
>> David Bjergaard <address@hidden> writes:
>>
>>> I use org mode as a lab notebook.  I write org-src blocks to keep track
>>> of tasks I do at the command line, and then I copy paste them into the
>>> terminal.  I would really like to hit "C-c C-c" on the source block and
>>> have it executed on the remote machine.  I know that you can specify
>>> the remote machine according to [1], however the software I use requires
>>> a fairly complicated setup to get going.
>>
>> Is it just complicated, or is it also prohibitively long-running?
>>
>> If just the former, you could maybe bundle the setup into some shell
>> script and source it in each of your sh source blocks.  Eg:
>>
>> #+BEGIN_SRC sh :results output :dir /ssh:lycastus:/home/bviren
>>   /bin/pwd
>>   echo $HOSTNAME
>>   ls -l foo.sh
>>   echo "---"
>>   cat foo.sh
>>   echo "---"
>>   source ./foo.sh
>>   echo $FOO
>> #+END_SRC
>>
>> #+RESULTS:
>> : /home/bviren
>> : lycastus
>> : -rw-rw-r-- 1 bviren bviren 16 Nov 18 10:27 foo.sh
>> : ---
>> : export FOO=bar
>> :
>> : ---
>> : bar
>>
>>
>>
>> If the setup is purely environmental, and it takes a long time to
>> perform, maybe you could do the set up once and then cache the resulting
>> environment using the output of "env".
>
> I guess I'm missing something (like why the OP want's to run a shell
> in a separate window), but why not just
>
> #+BEGIN_SRC sh :results output :dir /ssh:lycastus:/home/bviren :session 
> *shell*
>   /bin/pwd
>   echo $HOSTNAME
>   ls -l foo.sh
>   echo "---"
>   cat foo.sh
>   echo "---"
>   source ./foo.sh
>   echo $FOO
> #+END_SRC
>
> ?
>
> Best,
> Ista
>>
>>
>> -Brett.
Hi Ista, Brett,

Thanks for the hints, I'll try these. 
Some clarification:
>> If the setup is purely environmental, and it takes a long time to
>> perform, maybe you could do the set up once and then cache the resulting
>> environment using the output of "env".
Unfortunately it takes a long time to set up, and its complicated (I
have to initialize different versions of the software depending on
which project I'm working on.) It can take up to 10 seconds to restore a
saved environment, and it takes some setting up bootstrap the
restoration command.
> I guess I'm missing something (like why the OP want's to run a shell
> in a separate window), but why not just
I want the separate window because once the environment is set up, I
also jump around a lot.  I record the pieces of shell script that are
important for reproducing results in the notebook.  The snippets are
then recycled across many sessions, and different pieces are used at
different times (some are even used with different pieces of software).

What I would like is to log into the remote machine, set up the
software, and then have a way to tell emacs to send the org-src block to
the set up environment so that I can build up the parts I need at that
moment.  

I know this is working "against the grain" of the literate programming
paradigm where the document and the source code are coupled, and
tangling the document produces a program that can be executed.  I'm just
wondering if its possible.  If not that's fine.  Really I'm just trying
to save myself a copy-paste (and the associated issues with it getting
recorded in my .bash_history).

Cheers,

    Dave



reply via email to

[Prev in Thread] Current Thread [Next in Thread]