From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Bjergaard Subject: Re: Executing org shell blocks on remote machine over ssh Date: Tue, 18 Nov 2014 13:23:09 -0500 Message-ID: <87ioic8j1u.fsf@duke.edu> References: <874mtxx18q.fsf@duke.edu> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:51904) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XqnQz-0004FA-Vr for emacs-orgmode@gnu.org; Tue, 18 Nov 2014 13:23:31 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XqnQt-0002TK-KG for emacs-orgmode@gnu.org; Tue, 18 Nov 2014 13:23:25 -0500 Received: from smtp-gw-11.oit.duke.edu ([152.3.189.237]:64113 helo=mail-gw-11.oit.duke.edu) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XqnQt-0002Sc-FK for emacs-orgmode@gnu.org; Tue, 18 Nov 2014 13:23:19 -0500 In-Reply-To: (Ista Zahn's message of "Tue, 18 Nov 2014 13:12:16 -0500") List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: Ista Zahn Cc: Brett Viren , emacs-orgmode Mailinglist Ista Zahn writes: > On Tue, Nov 18, 2014 at 10:43 AM, Brett Viren wrote: >> David Bjergaard 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