user2746078
user2746078

Reputation: 107

How to execute remote pysftp commands under a specific shell

I use python module pysftp to connect to remote server. Below you can see python code :

import pysftp
import sys
import sqr_common

srv = pysftp.Connection(host="xxxxxx", username="xxxx",
password="xxxxx")



command  = "/usr/bin/bash"
command2="APSHOME=/all/aps/msc_2012; export APSHOME; "

srv.execute(command)
srv.execute(command2)





srv.close()

Problem is that command /usr/bin/bash is an infinite process , so my script will never be executed. Can anyone help me how to choose shell on remote server for example bash and execute command in bash on remote server?? Is there any pysftp function that allows me chosing shell??

Upvotes: 2

Views: 4326

Answers (2)

Mikko Ohtamaa
Mikko Ohtamaa

Reputation: 83526

This problem is not specific to Python, but more like how to execute commands under specific shell.

  • If you need to run only single command you can run using bash -c switch

    bash -c "echo 123"
    
  • You can run multiple commands ; separated

    bash -c "echo 123 ; echo 246"
    
  • If you need to many commands under a specific shell, remotely create a shell script file (.bash file) an execute it

    bash myscript.bash
    

Upvotes: 0

ray
ray

Reputation: 4267

try this

/usr/bin/bash -c "APSHOME=/all/aps/msc_2012; export APSHOME; "

Upvotes: 1

Related Questions