3

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

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

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

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

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

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

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

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

4

3 回答 3

0

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

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

于 2014-10-21T19:48:58.623 回答
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) 
于 2015-07-10T21:29:13.000 回答
-1

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

于 2013-03-29T07:06:22.750 回答