![여러 명령을 사용하여 원격 호스트에서 grep 실행](https://linux55.com/image/177821/%EC%97%AC%EB%9F%AC%20%EB%AA%85%EB%A0%B9%EC%9D%84%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EC%9B%90%EA%B2%A9%20%ED%98%B8%EC%8A%A4%ED%8A%B8%EC%97%90%EC%84%9C%20grep%20%EC%8B%A4%ED%96%89.png)
두 번째 명령은 무시됩니다.
ssh -q -t -o ConnectTimeout=10 learnserver sudo su - root -c 'hostname' && "/grep PermitRootLogin /opt/ssh/etc/sshd_config/"
답변1
일련의 명령을 ssh에 스크립트로 전달할 수 있습니다. 당신의 상황을 예로 들어보자
{
echo "sudo su -"
echo "hostname"
echo "grep PermitRootLogin /opt/ssh/etc/sshd_config/"
} > /tmp/some-script.sh
그런 다음
ssh your-remote < /tmp/some-script.sh
"스크립트 생성"은 스크립트가 어떻게 보이는지에 대한 예일 뿐입니다.
답변2
우선, 당신은 정말로 그것이 필요하지 않으며 sudo su
, 확실히 필요하지도 않습니다 sudo su - root
. 이 su
명령의 기본값은 루트이지만 이 sudo
명령은 루트로 실행해야 하는 명령을 실행하기 위해 존재합니다. 따라서 sudo command
꼭 필요한 경우가 아니면 루트로 명령을 실행하지 않아야 하며 hostname
루트는 필요하지 않습니다. 이 모든 것을 고려하면 필요한 작업을 수행해야 합니다.
ssh -q -t -o ConnectTimeout=10 learnserver sh -c "hostname && sudo grep PermitRootLogin /opt/ssh/etc/sshd_config"
즉, 여러 명령을 실행하려고 하지 말고 하나로 병합하십시오. 여기서는 sh -c command
"시작 sh
하고 실행하다 command
"라는 의미로 사용합니다.