From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ista Zahn Subject: Re: Executing org shell blocks on remote machine over ssh Date: Tue, 18 Nov 2014 13:31:48 -0500 Message-ID: References: <874mtxx18q.fsf@duke.edu> <87ioic8j1u.fsf@duke.edu> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:53983) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XqnZS-0007bX-Ds for emacs-orgmode@gnu.org; Tue, 18 Nov 2014 13:32:11 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XqnZR-0005NS-8o for emacs-orgmode@gnu.org; Tue, 18 Nov 2014 13:32:10 -0500 Received: from mail-ob0-x232.google.com ([2607:f8b0:4003:c01::232]:34632) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XqnZR-0005NO-2o for emacs-orgmode@gnu.org; Tue, 18 Nov 2014 13:32:09 -0500 Received: by mail-ob0-f178.google.com with SMTP id gq1so4427471obb.23 for ; Tue, 18 Nov 2014 10:32:08 -0800 (PST) In-Reply-To: <87ioic8j1u.fsf@duke.edu> 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: David Bjergaard Cc: Brett Viren , emacs-orgmode Mailinglist On Tue, Nov 18, 2014 at 1:23 PM, David Bjergaard wrote: > 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. Emacs is great for jumping around a lot, another reason to run the shell inside emacs instead of in a separate window. 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. It really does sound to me like you're just looking for the :session argument. Best, Ista 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