If you want an Org-mode solution, you could do the following. #+begin_src sh :dir /ssh:usern...@domain.org: ls -la #+end_src
Andrey Tykhonov <atykho...@gmail.com> writes: > Hi all! > > During last several days I was trying to implement quite simple script > which: > > 1. Creates new buffer with the shell (M-x shell) > 2. Executes there "ssh usern...@domain.com". As result -- the password > prompt appears in the minibuffer. I manually input password. > 3. Then script executes any command in the recently created buffer > (shell), for example: "ls -la". So I expect to see directory listing on > the domain.com. > > but, for sorry, I cannot to do so that "ls -la" will be executed! > > I googled, I have tried many different approaches but without any luck :-( > > Here I should mention quite important thing: I cannot use TRAMP because > it does not work with the server to which the script connects and then > on which executes "ls -la". (I suppose that TRAMP uses FUSE, but for > sorry FUSE does not work with mine server). So TRAMP is not available > for me. > > For example I tried: > > (progn > (make-comint-in-buffer "ssh" "*ssh*" "ssh" nil "usern...@domain.com") > (make-comint-in-buffer "ls" "*ssh*" "ls" nil "-la") > ) > "ls -la" does not executes. > > (progn > (make-comint-in-buffer "ssh" "*ssh*" "ssh" nil "usern...@domain.com") > ; instead of "ls -la" here is pwd > (start-file-process "pwd" "*ssh*" "pwd") > ) > In *scratch* outputs just "Process pwd finished" > > (progn > (start-process-shell-command "ssh" "*ssh*" "ssh userna...@domain.com") > (process-send-string (get-buffer-process "*ssh*") "pwd\n") > ) > Seems this one -- is overall wrong approach because > start-process-shell-command > does not want to show shell after I put the password in the prompt. > > Also I tried call-process instead of start-process-shell-command: > (call-process "ssh" nil "*ssh*" t "usern...@domain.com") > > I got "Pseudo-terminal will not be allocated because stdin is not a > terminal". > > Then... > > (progn > (setq buffer (get-buffer-create "*ssh*")) > ; switch to buffer > (switch-to-buffer-other-window buffer) > ; execute there a shell > (shell buffer) > ; then executes there mine commands > (process-send-string (get-buffer-process "*ssh*") "ssh usern...@domain.com") > (comint-send-input) > ; and > (process-send-string (get-buffer-process "*ssh*") "ls -la") > (comint-send-input) > ) > Last process-send-string does not execute in time because it is not > synchronous. > Last process-send-string does not wait for previous... > > Also I tried set-process-filter but filter just eats password prompt so > I could not input password.... > > > How my task could be implemented without TRAMP? > > Please help! > > > > Regards, > Andrey > > > > > > -- Eric Schulte https://cs.unm.edu/~eschulte PGP: 0x614CA05D