如何使用paramiko更改当前工作目录并设置环境变量?

时间:2013-03-27 16:48:25

标签: python ssh paramiko

我想ssh到另一台服务器运行一些脚本。

但在运行脚本之前,我需要将目录更改为脚本所在的路径并设置一些环境变量。

在我的本地主机中,可以通过

完成
os.chdir(path)
os.environ["xxx"] = "xxx"

但是在paramiko中,我不确定是否有任何方法可以完成上述事情。我找到的最接近的是

ssh.exec_command("cd /xxx/yyy;xxx.sh")

但我不想执行与; 连接在一起的几个命令。

想问一下,当ssh使用paramiko时,有没有其他方法可以更改目录/设置环境变量?

3 个答案:

答案 0 :(得分:0)

对于环境变量,我无法设置它们,但是使用交互式shell将加载用户的环境变量。那些你可以在.bashrc文件中更改。

关于如何设置交互式shell: http://snipplr.com/view/12940/

答案 1 :(得分:0)

我还没有找到关于如何更改主机目录的解决方案;像你一样,我一直试图使用sshClient.exec_command("cd " + directory_name),但没有效果。

但是,我可以帮助您解决发出多个命令的问题。您只需致电sshClient.exec_command("command1; command2; command3;")即可。或者,您可以创建一个辅助方法,例如:

def execCmd(ssh_client, *commands):
    for command in commands:
        stdin, stdout, stderr = ssh_client.exec_command(command)
        for line in stdout.readlines():
            print line
        for line in stderr.readlines():
            print line

cmds = [command1,command2,command3]
execCmd(SSH_Client,*cmds) 

答案 2 :(得分:-1)

你可以使用'|'管道结合不同的命令。 它适用于ssh.exec_command()。