如何在特定shell下执行远程pysftp命令

时间:2013-11-29 13:06:23

标签: python bash pysftp

我使用python模块pysftp连接到远程服务器。下面你可以看到python代码:

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()

问题是命令/ usr / bin / bash是一个无限的进程,所以我的脚本永远不会被执行。任何人都可以帮我如何选择远程服务器上的shell,例如bash,并在远程服务器上的bash中执行命令?是否有任何pysftp函数可以让我选择shell?

2 个答案:

答案 0 :(得分:1)

试试这个

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

答案 1 :(得分:0)

此问题并非特定于Python,而更像是如何在特定shell下执行命令。

  • 如果只需要运行单个命令,则可以使用bash -c switch

    运行
    bash -c "echo 123"
    
  • 您可以运行多个命令;分离

    bash -c "echo 123 ; echo 246"
    
  • 如果您需要在特定shell下执行许多命令,请远程创建shell脚本文件(.bash文件)并执行它

    bash myscript.bash