2013-03-27 209 views
3

我想ssh到另一台服务器上运行一些脚本。如何更改当前工作目录并使用paramiko设置环境变量?

但在此之前我运行该脚本,我需要改变目录到脚本是找到并设置一些环境变量的路径。

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

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

进行,但在的paramiko,我不知道任何的方法可以实现上面的事。我发现的最接近的是

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

但我不希望执行多个命令与连接在一起;

想问一下有没有可以使用的paramiko SSH时更改目录/设置环境变量的任何其他方式?

回答

-1

你可以用 '|'管道组合不同的命令。 它将与ssh.exec_command()一起使用。

+0

这只有在意图将第一个命令的输出作为输入传递给第二个时才是正确的。这对OP的问题根本没有帮助。 – tripleee 2017-06-27 09:41:15

0

有关环境变量我不能让他们进行设置,但是使用交互式shell会加载用户的环境变量。那些你可以在.bashrc文件中改变的。

关于如何建立一个交互的shell: http://snipplr.com/view/12940/

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)