원격 서버에 상주하는 스크립트를 실행하고 있습니다. 이 bash 스크립트는 변수를 사용합니다. 이 변수는 ~/.profile에 정의됩니다. 이를 위해 는subprocess를 사용하여 원격 스크립트 실행 - 원격 스크립트는 ~/.profile의 vars를 사용합니다.
$MYVAR=/a/b/c
그래서 원격 원격 서버 또는 SSH에 내가
echo $MYVAR returns /a/b/c as you would expect.
을 실행하지만 로컬 파이썬 하위 프로세스를 사용하여 원격 스크립트를 실행하는 경우, 스크립트가 실패라고 할 수 있습니다. 스크립트가 $ MYVAR을 사용하여 실패로 잘못 해석됩니다.
이것은 SSH를 통해 실행 중이기 때문에 ~./프로필이로드되어서는 안되며 대신 다른 프로필을 사용 중입니다. 여기
https://superuser.com/questions/207200/how-can-i-set-environment-variables-for-a-remote-rsync-process/207262#207262는 파이썬 스크립트에서 실행되는 명령입니다 여기에서 볼
ssh = subprocess.Popen(['ssh', '%s' % env.host, 'cd /script/dir | ./myscript arg1 arg2'],shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
내 질문은 내가 사용자가 ~/.profile에 다음 실행로드, 원격으로 ssh를 것, 로컬 스크립트를 실행 할 수있는 방법입니다 bash 스크립트.
아래의 예에서 $ MYVAR' 코드에서 어떻게 사용되고 있는지'아무 생각을 같이하지 않기 때문에
http://www.paramiko.org/
설치가 완료되면, 당신은'./myscript'에서하는 명령을 실행할 수 있습니다 ? – georgexsh
'cd 무언가 | somecommand'는'cd '가 표준 출력에 유용한 것을 생성하지 않기 때문에 아무런 도움이되지 않습니다. 실제로 * 성취하려는 것은 무엇입니까? – tripleee
당신은'[ 'ssh', 'remote', 'cd dir; myvar = "{}"somecommand arg1 arg2'.format (shlex.quote (os.environ [ 'MYVAR']))'? – tripleee