SSH를 통해 여러 매개변수를 전달하고 SSH 스크립트에서 이러한 매개변수를 사용하는 방법은 무엇입니까?

SSH를 통해 여러 매개변수를 전달하고 SSH 스크립트에서 이러한 매개변수를 사용하는 방법은 무엇입니까?

스크립트 파일을 실행하려고 합니다.스크립트 파일원격 컴퓨터에서사용자 @remote-01사용SSH. 또한 이 ssh 명령을 실행하는 동안 매개변수를 전달해야 합니다. 따라서 다음 매개변수를 사용해야 합니다.스크립트 파일. 이것은 내가 실행하려는 스크립트입니다.

    var1=True
    var2=False
    var3=True

    sshpass -p 'pswd' ssh user@remote-01 "bash -s" < /home/user/sc.sh

내 sc.sh는 다음과 같습니다.

    if var1 -eq True; then
       echo "Todo"
    fi

    if var2 -eq True; then
       echo "Todo"
    fi

    if var3 -eq True; then
       echo "Todo"
    fi

    ..... so on

var1, var2, var3을 매개변수로 전달하고 위와 같이 스크립트에서 사용하려면 어떻게 해야 합니까?

답변1

이 질문은 이전에 답변되었습니다.질문.

그러나 원하는 작업은 다음과 같습니다.

스크립트 파일

#!/bin/bash

var1=$1
var2=$2
var3=$3

if $var1 -eq True; then
   echo "Todo1"
fi

if $var2 -eq True; then
   echo "Todo2"
fi

if $var3 -eq True; then
   echo "Todo3"
fi

그런 다음 다음 명령을 실행하십시오.

ssh user@remote-01 'bash -s' < test.sh true true true

BASH의 매개변수는 $1과 같이 $number로 참조될 수 있습니다.

답변2

수많은 시행착오를 거쳐 마침내 해결책이 나왔습니다.

 var1="True"
 var2="False"
 var3="True"

 sshpass -p 'pswd' ssh user@remote-01 "bash -s" < /home/user/sc.sh "$var1 $var2 $var3"

다음과 같이 사용해야합니다스크립트 파일

if [ "$1" = "True" ]; then
   echo "Todo"
fi
if [ "$2" = "False" ]; then
   echo "Todo"
fi
if [ "$3" = "True" ]; then
   echo "Todo"
fi

답변3

여기서는 sshvar1/var2/var3 변수를 명령줄의 환경 변수로 전달하고 있으며 이러한 변수는 bashm/c의 코드에서 사용할 수 있습니다.remote

var1="$var1" var2="$var2" var3="$var3" \
   sshpass -p 'pswd' ssh user@remote-01 "bash -s" < /home/user/sc.sh

내용은 sc.sh다음과 같습니다:

if [ "$var1" = True ]; then
   echo "Todo"
fi

if [ "$var2" = True ]; then
   echo "Todo"
fi

if [ "$var3" = True ]; then
   echo "Todo"
fi

..... so on

관련 정보