Como passar vários argumentos através de ssh e usar esses argumentos no script ssh?

4

Estou tentando executar o arquivo de script sc.sh na máquina remota user @ remote-01 usando ssh . Eu também preciso passar os argumentos durante a execução deste comando ssh. Então eu tenho que usar esses argumentos em sc.sh . Este é o meu script que estou tentando executar

    var1=True
    var2=False
    var3=True

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

Meu sc.sh se parece com:

    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

Como posso passar var1, var2, var3 como argumentos e usá-los no meu script como acima?

    
por Ejjagiri Venkatesh 20.04.2017 / 05:58

3 respostas

0

Isso foi respondido anteriormente na pergunta .

no entanto, o que você provavelmente faria seria algo como o seguinte.

sc.sh

#!/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

execute o seguinte comando

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

Os argumentos de

no BASH podem ser referenciados por $ number, e. $ 1

    
por 20.04.2017 / 06:44
0

Por fim, obtive a solução tentando muitas tentativas de tentativa e erro.

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

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

E deve usar o seguinte em sc.sh

if [ "$1" = "True" ]; then
   echo "Todo"
fi
if [ "$2" = "False" ]; then
   echo "Todo"
fi
if [ "$3" = "True" ]; then
   echo "Todo"
fi
    
por 20.04.2017 / 07:11
0

Aqui nós passamos as variáveis var1 / var2 / var3 como variáveis env na linha de comando ssh que então ficam disponíveis para o código bash no remote m / c.

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

O conteúdo de sc.sh será:

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

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

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

..... so on
    
por 20.04.2017 / 08:21