2013-03-27 2 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

0

환경 변수의 경우 대화식 셸을 사용하면 사용자의 환경 변수가로드되지만 설정할 수는 없습니다. .bashrc 파일에서 변경할 수 있습니다. 대화 형 쉘 설정하는 방법에 대해서는

: 내가 호스트 디렉토리를 변경하는 방법은 아직 해결책을 찾지 못한 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) 
관련 문제