IT이야기

인수를 사용하여 ssh를 통해 원격 명령을 실행하는 방법

cyworld 2021. 10. 8. 21:08
반응형

인수를 사용하여 ssh를 통해 원격 명령을 실행하는 방법은 무엇입니까?


내에서는 .bashrc나중에 명령줄에서 사용할 수 있는 함수를 정의합니다.

function mycommand() {
    ssh user@123.456.789.0 cd testdir;./test.sh "$1"
}

이 명령을 사용할 때 명령만 cd원격 호스트에서 실행됩니다. test.sh명령은 로컬 호스트에서 실행됩니다. 이는 세미콜론이 두 개의 다른 명령인 ssh명령과 명령을 구분하기 때문 test.sh입니다.

다음과 같이 함수를 정의하려고 시도했습니다(작은 따옴표 참고).

function mycommand() {
    ssh user@123.456.789.0 'cd testdir;./test.sh "$1"'
}

cd명령과 test.sh명령을 함께 유지하려고 했지만 함수 $1에 부여한 내용과 관계없이 인수 가 해결되지 않았습니다. 항상 명령을 실행하려고 시도합니다.

./test.sh $1

원격 호스트에서.

어떻게 제대로 정의합니까 mycommand스크립트가 있도록 test.sh디렉토리로 변경 한 후 원격 호스트에서 실행되는 testdir주어진 인수에 전달할 수있는 능력, mycommandtest.sh?


대신 다음과 같이 하십시오.

function mycommand {
    ssh user@123.456.789.0 "cd testdir;./test.sh \"$1\""
}

여전히 전체 명령을 단일 문자열로 전달해야 하지만 해당 단일 문자열 $1에서 ssh로 전송되기 전에 확장해야 하므로 이를 사용해야 ""합니다.

업데이트

실제로 이를 수행하는 또 다른 적절한 방법 printf %q은 인수를 적절하게 인용하는 데 사용 하는 것입니다. 이렇게 하면 공백, 작은따옴표, 큰따옴표 또는 쉘에 특별한 의미를 가질 수 있는 다른 문자가 있는 경우에도 인수를 구문 분석하는 것이 안전합니다.

function mycommand {
    printf -v __ %q "$1"
    ssh user@123.456.789.0 "cd testdir;./test.sh $__"
}
  • 로 함수를 선언 할 때 function, ()필요하지 않습니다.
  • 당신이 POSIXist이기 때문에 그것에 대해 다시 언급하지 마십시오.

오래된 스레드를 되살리지만이 꽤 깨끗한 접근 방식은 나열되지 않았습니다.

function mycommand() {
    ssh user@123.456.789.0 <<+
    cd testdir;./test.sh "$1"
+
}

이것은 AWS 클라우드에서 작동하는 예입니다. 시나리오는 자동 크기 조정에서 부팅된 일부 시스템이 SSH를 통해 새로 생성된 인스턴스 DNS를 전달하여 다른 서버에서 일부 작업을 수행해야 한다는 것입니다.

# Get the public DNS of the current machine (AWS specific)
MY_DNS=`curl -s http://169.254.169.254/latest/meta-data/public-hostname`


ssh \
    -o StrictHostKeyChecking=no \
    -i ~/.ssh/id_rsa \
    user@remotehost.example.com \
<< EOF
cd ~/
echo "Hey I was just SSHed by ${MY_DNS}"
run_other_commands
# Newline is important before final EOF!

EOF

로컬 컴퓨터에서 원격으로 명령을 실행하기 위해 다음을 사용하고 있습니다.

ssh -i ~/.ssh/$GIT_PRIVKEY user@$IP "bash -s" < localpath/script.sh $arg1 $arg2

ReferenceURL : https://stackoverflow.com/questions/18502945/how-to-execute-a-remote-command-over-ssh-with-arguments

반응형