웹페이지가 서버 A에 로드되면 서버 B에서 스크립트를 실행하고 싶습니다. 서버 B에 로그인하고 스크립트를 실행하여 서버 A의 일련의 명령을 사용하여 이 작업을 수행할 수 있지만 PHP가 실행할 수 있도록 이 모든 작업을 하나의 명령문으로 완료해야 합니다.
이것은 작동합니다:
user@A$ sudo -u www-data bash
bash: /home/user/.bashrc: Permission denied
그 다음에:
www-data@A$ ssh -i /etc/ssh/www-data/id_rsa remote@B
Welcome to Ubuntu 12.04.1 LTS (GNU/Linux 3.2.0-32-generic x86_64)
그 다음에:
remote@B$ /home/web/script.php
(출력은 없지만 데이터베이스에서 결과를 볼 수 있습니다)
그래서 모든 사람이 메시지가 어디로 가는지에 액세스할 수 있는지 확인할 수 있습니다. 하지만 이 내용을 하나의 문장으로 결합하려고 하면 다음과 같습니다.
user@A$ sudo -u www-data bash
bash: /home/zen/.bashrc: Permission denied
(아파치/php와 마찬가지로)
www-data@A$ ssh -i /etc/ssh/www-data/id_rsa remote@B `/home/remote/script.php`
그러면 나는 다음을 얻습니다:
bash: /home/remote/script.php: No such file or directory
Welcome to Ubuntu 12.04.1 LTS (GNU/Linux 3.2.0-32-generic x86_64) ....
또한 관련은 없지만 이상한 B에 로그인합니다.
그런 다음 온전성 테스트로 거기에서 스크립트를 실행했습니다.
remote@B$ /home/remote/script.php
어떤 조언이라도 미리 감사드립니다!
답변1
참조의 우선순위가 문제일 수 있습니다.
ssh remote@B `/home/remote/script.php`
다음과 매우 다릅니다:
ssh remote@B '/home/remote/script.php'
첫 번째 경우, 셸은 script.php
로컬 컴퓨터에서 호출되어 아무것도 반환하지 않을 수 있으므로 명령은 결국 ssh remote@B
대화형 셸을 제공하게 됩니다.
두 번째 명령은 명령문( /home/remote/script.php
)을 ssh
원격 시스템의 셸에 전달합니다.
백틱을 작은따옴표로 변경해 보세요.