我想ssh到另一台服务器运行一些脚本。
但在运行脚本之前,我需要将目录更改为脚本所在的路径并设置一些环境变量。
在我的本地主机中,可以通过
完成os.chdir(path)
os.environ["xxx"] = "xxx"
但是在paramiko中,我不确定是否有任何方法可以完成上述事情。我找到的最接近的是
ssh.exec_command("cd /xxx/yyy;xxx.sh")
但我不想执行与; 连接在一起的几个命令。
想问一下,当ssh使用paramiko时,有没有其他方法可以更改目录/设置环境变量?
答案 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()。