
SSH를 통해 다음 명령을 실행하고 싶습니다.
echo "trap '/tmp/test &' 2 9" >> /tmp/output.txt
나는 다음과 같이하려고합니다 :
ssh 127.0.0.1 -T "echo "trap '/tmp/test &' 2 9" >> /tmp/output.txt"
다음과 같이 Python 하위 프로세스를 사용하고 있습니다.
command = "echo \"trap '/tmp/test &' 2 9\" >> /tmp/output.txt"
addtrap = 'ssh root@' + rhost + ' -T "' + command + '"'
subprocess.Popen(addtrap, shell=True)
그러나 분명히 따옴표와 아포스트로피와 관련하여 몇 가지 오류가 발생합니다. 이 문제를 방지할 수 있는 옵션이 있습니까?
답변1
신뢰할 수 있는 방법 중 하나는 다음을 수행하는 것입니다.
ssh 127.0.0.1 sh << "EOF"
echo "trap '/tmp/test &' INT" >> /tmp/output.txt
EOF
sh
그런 다음 원격 사용자의 로그인 셸이 아닌 어떤 셸을 얻게 되는지 알 수 있으며 sh
인용에 대해 걱정할 필요 없이 축어적으로 해석하기 위한 코드를 쉽게 전달할 수 있습니다.
(그런데, 당신은 절대 사용하고 싶지 않습니다 -T
. 를 사용하고 싶을 수도 있지만 대화형 셸과 -t
같은 대화형 응용 프로그램을 실행하는 경우에만 vi
신호 9, 일반적으로 SIGKILL은 트랩될 수 없으므로 숫자보다는 신호 이름을 사용하는 것이 좋습니다).