Selecione o comando não funciona enquanto executa scripts de shell na máquina remota

0

Eu quero executar meu script de shell em uma máquina remota e preciso que o usuário queira dar valor a alguma variável para que usemos o comando Ler enquanto executa o script na máquina local, mas eu uso o mesmo comando enquanto executo o script na máquina remota mas não está funcionando para mim. Como usar o comando Ler para executar o script na máquina remota?

código de amostra:

restore (){
        echo "Restore"
}

deploy () {
        echo "Deploy"
}


echo "Select any option to proceed..."
read opt
case $opt in

        restore)
        restore;
        break;;

        deploy)
        deploy;
        break;;
esac

Esse código funciona bem quando os scripts são executados na máquina local.

Obrigado antecipadamente!

    
por Jeevanantham Mathavaraj 23.12.2015 / 13:24

2 respostas

4

Se você disser bash para ler os comandos de stdin , que é o que a opção -s faz e, em seguida, redirecionar seu stdin, não será mais possível fornecer entrada via stdin.

Você deveria como um script normal:

ssh [email protected] bash /root/BackupShellScript/remote.sh

E forneça /usr/local/etc/BackupShellScript/configuration.conf do seu script, em vez de usar o método cat e substituir o processo.

    
por muru 23.12.2015 / 14:27
1

Esse script não funciona localmente - não importa com o ssh.

O problema é que você coloca seu resultado em option e depois usa case $opt . Então mude option para opt e tudo está bem.

#!/bin/bash

restore (){
        echo "Restore"
}

deploy () {
        echo "Deploy"
}

echo "Select any option to proceed..."
select opt in "deploy" "restore" ; do
case $opt in

        restore)
        restore;
        break;;

        deploy)
        deploy;
        break;;
esac
done
    
por Mark Smith 23.12.2015 / 14:28