한 서버에 SSH를 연결하고 다른 서버에 SSH를 연결한 다음 두 번째 서버에서 명령을 실행하고 두 서버를 모두 종료하는 bash를 만들려고 합니다.
지금까지 나는 얻었다
ssh [email protected] "ssh [email protected]; cd Dirk; source venv/bin/activate; python app.py; exit; exit;"
하지만 첫 번째 서버에서 SSH로 접속하는 두 번째 서버에서는 명령을 실행할 수 없는 것 같습니다. 어떻게 해야 합니까?
답변1
ssh user@host
(중첩 호출처럼) 명령을 인수로 제공하지 않고 실행 하면 ssh는 쉘을 시작하고 명령이 입력될 때까지 기다립니다.
명령을 파이프하면 ssh host1 ssh host 2
작동합니다. 귀하의 질문과 동일한 예를 사용하십시오.
echo "cd Dirk; source venv/bin/activate; python app.py" \
| ssh [email protected] ssh [email protected]
답변2
ssh -t
어쩌면 당신을 위한 해결책일 수도 있어요
ssh [email protected] -t "ssh [email protected] -t 'cd Dirk; source venv/bin/activate; python app.py; exit; exit;'"